前言:
前兩天,作者晚上九點下班,打車回去,想著可以美美的睡上一覺啦(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; 命令可以顯示系統中所有當前運行的線程,包括每個線程的狀態、是否鎖定等信息。
這個命令輸出的表格中包含的字段具有以下含義:
當 Command 列顯示為 Sleep 時,這意味著該線程當前沒有執行任何查詢,只是在連接池中等待下一個查詢命令。通常,應用程序執行完一個查詢后,連接可能會保持打開狀態而不是立即關閉,以便可以重用該連接執行后續的查詢。在這種狀態下,線程不會使用服務器資源來處理任何數據,但仍占用一個連接槽。如果看到很多線程處于 Sleep 狀態且持續時間較長,這可能是一個優化點,例如,通過調整應用邏輯或連接池設置來減少空閑連接的數量。
二:
查詢當前最大連接數和超時時間
# 查看最大連接數
show variables like '%max_connections%';
# 查看非交互式超時時間 單位秒
show variables like 'wait_timeout';
# 查看交互式叫號時間 單位秒
show variables like 'interactive_timeout';
三:
修改最大連接數和超時時間
SQL直接改:
# 重啟后失效 這里直接設置1000
SET GLOBAL max_connections=1000;
# 設置全局 非交互連接 超時時間 單位秒
SET GLOBAL wait_timeout=300;
配置文件改:
MySQL的配置文件通常是 my.cnf(在Linux系統中)或 my.ini(在Windows系統中)。你應該在 [mysqld] 部分中設置這些參數
在Linux系統上,MySQL的配置文件一般位于以下幾個路徑之一:
具體位置可能會根據不同的Linux發行版和MySQL安裝方式有所不同。你可以使用 find 命令來搜索這個文件,例如:sudo find / -name my.cnf
找到到文件后,將這些值修改為下列的值 這里直接設置1000
[mysqld]
max_connections=1000
wait_timeout=300
四:
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 GLOBAL VARIABLES LIKE 'wait_timeout';
# 與之對應的,查看會話級別的變量可以使用:
SHOW SESSION VARIABLES LIKE 'wait_timeout';
全局變量和會話變量的區別:
全局變量:
會話變量:
關于是否改變全局變量,這取決于你試圖解決的具體問題:
以上是關于數據連接滿了,通過修改最大連接數和超時時間等參數配置來應對連接滿的情況問題。
問題描述:
Windows10系統,連接無線或有線,出現感嘆號、搜不到無線、地球標志、提示無法連接,等聯網問題
可以通過重置網絡操作處理,此方法經多次測試可以解決本身電腦聯網的問題
解決方案:
1,點擊左下角開始,打開“設置”
2,選擇“網絡和Internet”
3,找到最底下的“網絡重置”
4,選擇“立即重置”,提示后點“是”點完后等待大約10分鐘后電腦會重啟進入桌面(注:此操作一定要把打開的資料保存關閉,以免數據丟失)