操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    前言:

    前兩天,作者晚上九點下班,打車回去,想著可以美美的睡上一覺啦(ps:由于最近項目比較忙,就加班到九點,作者是很討厭加班的)。可誰想,在凌晨十二點手機鈴聲響了,我迷迷糊糊的在睡夢中醒來,接通了電話。。。果不其然,是現場問題,需要立即支撐并解決。

    到底是什么問題呢?原來是數據連接滿了,導致業務無法再次和數據庫建立連接,程序報錯。需要優化修改。

    問題分析

    我們用的是MySQL數據庫,會連不上數據庫既連接太多,要么減少連接,要么擴大最大可連接數,經過查詢,MySQL 數據庫 的默認最大連接數是經常設置在151的默認值,而最大連接數可以達到16384個

    報錯信息:

    com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
    too many connections

    分析過程

    一:

    查看數據庫當前連接信息,可以看到連接數據庫的進程id,ip,用戶名,連接的數據庫,連接狀態,連接時長等如果發現有大量的sleep狀態的連接進程,則說明該參數設置的過大,可以進行適當的調整小一些。

    SHOW FULL processlist;

    在MySQL中,使用 SHOW FULL PROCESSLIST; 命令可以顯示系統中所有當前運行的線程,包括每個線程的狀態、是否鎖定等信息。

    這個命令輸出的表格中包含的字段具有以下含義:

    1. Id: 線程的唯一標識符。這個ID可以用來引用特定的線程,例如,在需要終止一個特定的線程時可以使用 KILL 命令。
    2. User: 啟動線程的MySQL用戶。
    3. Host: 用戶連接到MySQL服務器的主機名和端口號,顯示格式通常是 host_name:port。
    4. db: 當前線程所在的數據庫。如果線程沒有使用任何數據庫,這一列可能顯示為NULL。
    5. Command: 線程正在執行的命令類型,例如 Query、Sleep、Connect 等。
    6. Time: 命令執行的時間,以秒為單位。對于 Sleep 狀態,這表示線程處于空閑狀態的時長。
    7. State: 線程的當前狀態,提供了正在執行的命令的額外信息。這可以是 Sending data、sorting result、Locked 等。
    8. Info: 如果線程正在執行查詢,則這一列顯示具體的SQL語句。對于其他類型的命令,這一列可能為空或顯示為NULL。

    當 Command 列顯示為 Sleep 時,這意味著該線程當前沒有執行任何查詢,只是在連接池中等待下一個查詢命令。通常,應用程序執行完一個查詢后,連接可能會保持打開狀態而不是立即關閉,以便可以重用該連接執行后續的查詢。在這種狀態下,線程不會使用服務器資源來處理任何數據,但仍占用一個連接槽。如果看到很多線程處于 Sleep 狀態且持續時間較長,這可能是一個優化點,例如,通過調整應用邏輯或連接池設置來減少空閑連接的數量。

    二:

    查詢當前最大連接數和超時時間

    # 查看最大連接數
    show variables like '%max_connections%';
    # 查看非交互式超時時間 單位秒
    show variables like 'wait_timeout';
    # 查看交互式叫號時間 單位秒
    show variables like 'interactive_timeout';
  • max_connections:
    1. max_connections 參數定義了數據庫服務器能夠同時接受的最大客戶端連接數。當達到這個限制時,任何新的嘗試連接的客戶端將會收到一個錯誤,通常是“Too many connections”。
    2. 默認值通常基于系統的能力和配置,但經常設置在151的默認值。這個值可以根據服務器的硬件資源(如CPU和內存)和負載要求進行調整。
  • mysqlx_max_connections:
    1. mysqlx_max_connections 參數是專門為MySQL的X協議設定的最大連接數。X協議使得開發者能夠使用NoSQL風格的接口與數據庫交互。
    2. 默認值通常較小,因為X協議的使用還不如傳統SQL協議普遍。這個參數允許你獨立于max_connections控制通過X協議可能的連接數。
  • wait_timeout
    1. wait_timeout 設置的是非交互式(非控制臺)客戶端連接在變成非活動狀態后,在被自動關閉之前等待的秒數。非交互式連接通常指的是通過網絡或API等進行的數據庫連接,如應用程序服務器到數據庫的連接。
    2. 默認值通常較長,如8小時(28800秒),但這可以根據需要進行調整,特別是在連接數資源受限的環境中。
  • interactive_timeout
    1. interactive_timeout 適用于MySQL服務器與客戶端進行交互式會話時的連接超時設置。交互式會話通常是指用戶通過MySQL命令行客戶端或類似工具直接連接并操作數據庫。
    2. 這個超時值只會在MySQL服務器識別連接為交互式時應用。它的默認值也通常是8小時。

    三:

    修改最大連接數和超時時間

    SQL直接改:

    # 重啟后失效 這里直接設置1000
    SET GLOBAL max_connections=1000;
    # 設置全局 非交互連接 超時時間 單位秒
    SET GLOBAL wait_timeout=300;

    配置文件改:
    MySQL的配置文件通常是 my.cnf(在Linux系統中)或 my.ini(在Windows系統中)。你應該在 [mysqld] 部分中設置這些參數

    在Linux系統上,MySQL的配置文件一般位于以下幾個路徑之一:

    1. /etc/my.cnf
    2. /etc/mysql/my.cnf
    3. /var/lib/mysql/my.cnf

    具體位置可能會根據不同的Linux發行版和MySQL安裝方式有所不同。你可以使用 find 命令來搜索這個文件,例如:sudo find / -name my.cnf

    找到到文件后,將這些值修改為下列的值 這里直接設置1000

    [mysqld]
    max_connections=1000
    
    wait_timeout=300
    

    四:
    docker容器修改配置

    1. 使用Docker命令行參數
    2. 可以在運行MySQL容器時通過Docker命令行直接設置配置參數,例如:
    docker run -d \
      -p 3306:3306 \
      --name mysql \
      -e MYSQL_ROOT_PASSWORD=my-secret-pw \
      -e MYSQL_DATABASE=mydatabase \
      mysql:tag --max-connections=1000 --wait-timeout=300

    --max-connections=1000 是作為命令行參數傳遞給MySQL服務器的

    修改配置文件并掛載,修改完后再查一遍看看有沒有改成功

    # 查看最大連接數
    show variables like '%max_connections%';
    # 查看非交互式超時時間
    SHOW GLOBAL VARIABLES LIKE 'wait_timeout';

    說明:

    wait_timeout 變量分為全局級別和會話級別:
    執行 SET GLOBAL wait_timeout=300;后,

  • 使用執行 show variables like 'wait_timeout'; 發現并沒有改變是因為在MySQL中,當你執行 SET GLOBAL wait_timeout=300; 這條命令時,理論上應該是會設置全局的 wait_timeout 值為300秒。在查詢 wait_timeout 時,沒有指定是查詢全局變量,可能會返回會話級的值。會話級的 wait_timeout 并沒有被改變。嘗試使用以下命令來查看全局設置:
  • # 查看全局變量
    SHOW GLOBAL VARIABLES LIKE 'wait_timeout';
    # 與之對應的,查看會話級別的變量可以使用:
    SHOW SESSION VARIABLES LIKE 'wait_timeout';

    全局變量和會話變量的區別:

    全局變量:

    1. 全局變量對服務器上所有當前會話和未來會話都有效。
    2. 當你設置一個全局變量時,它的值會影響所有新建的連接。然而,對于已經存在的連接,全局變量的更改通常不會影響它們,除非這些連接被重新啟動或者明確地重新讀取全局設置。
    3. 通過 SET GLOBAL 命令修改全局變量,或者在服務器的配置文件中設置并重新啟動服務器。

    會話變量:

    1. 會話變量只對當前連接的會話有效,并且當會話結束時,會話變量的設置就會失效。
    2. 修改會話變量的命令是 SET SESSION 或者簡單的 SET,它不會影響其他會話或連接。
    3. 每個新的會話都會從當前的全局設置中繼承變量的值,但在會話中對這些變量的修改不會影響到其他會話。

    關于是否改變全局變量,這取決于你試圖解決的具體問題:

    • 如果你需要修改的設置應該對所有新的連接生效,例如,修改 wait_timeout 來減少空閑連接超時,那么修改全局變量是合適的。這樣,所有新建立的連接都會采用新的超時設置。
    • 然而,如果你需要立即影響當前活動的會話,你必須在每個會話中單獨設置會話變量。這在某些操作中可能是必需的,比如調整當前事務的隔離級別或者調試中動態改變某些性能調優參數。
    • 改變是為了長期或持久的配置調整,修改全局變量通常是正確的做法。但如果需要對當前會話立即生效的改變,應該使用會話變量。

    總結

    以上是關于數據連接滿了,通過修改最大連接數和超時時間等參數配置來應對連接滿的情況問題。

    問題描述:

    Windows10系統,連接無線或有線,出現感嘆號、搜不到無線、地球標志、提示無法連接,等聯網問題

    可以通過重置網絡操作處理,此方法經多次測試可以解決本身電腦聯網的問題

    解決方案:

    1,點擊左下角開始,打開“設置”

    2,選擇“網絡和Internet”

    3,找到最底下的“網絡重置”

    4,選擇“立即重置”,提示后點“是”點完后等待大約10分鐘后電腦會重啟進入桌面(注:此操作一定要把打開的資料保存關閉,以免數據丟失)

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有