日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

too many connections 解决方法

發布時間:2025/3/14 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 too many connections 解决方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近寫javaee項目的時候,mysql報了too many connections的錯誤,百度的內容有一些有問題,所以我重新寫一下我的解決方法。

mysql -u root -p 回車輸入密碼進入mysql

?

這里寫圖片描述

show processlist;

查看連接數,可以發現有很多連接處于sleep狀態,這些其實是暫時沒有用的,所以可以kill掉

show variables like "max_connections";

查看最大連接數,應該是與上面查詢到的連接數相同,才會出現too many connections的情況

set GLOBAL max_connections=1000;

修改最大連接數,但是這不是一勞永逸的方法,應該要讓它自動殺死那些sleep的進程。

show global variables like 'wait_timeout';

這個數值指的是mysql在關閉一個非交互的連接之前要等待的秒數,默認是28800s

set global wait_timeout=300;

修改這個數值,這里可以隨意,最好控制在幾分鐘內

這里寫圖片描述

set global interactive_timeout=500;

修改這個數值,表示mysql在關閉一個連接之前要等待的秒數,至此可以讓mysql自動關閉那些沒用的連接,但要注意的是,正在使用的連接到了時間也會被關閉,因此這個時間值要合適

批量kill之前沒用的sleep連接,在網上搜索的方法對我都不奏效,因此只好使用最笨的辦法,一個一個kill

select concat('KILL ',id,';') from information_schema.processlist where user='root'; 先把要kill的連接id都查詢出來

復制中間的kill id;內容到word文檔
替換掉符號“|”和回車符(在word中查詢^p即可查詢到回車符)
把修改過的內容復制回終端,最后按回車執行!

ERROR 1040: Too many connections問題解決辦法

?

出現此錯誤的原因,一種是訪問量確實很高,MySQL服務器頂不住,這個時候就要考慮增加從服務器分散讀壓力,另外一種情況是MySQL配置文件中max_connections值過小。

?

分析原因

mysql的默認連接上只有100,也就是說連接數據超過100 就會有可能出現 Too Many Connections

修改my.cnf配置文件添加并需要重啟:

[mysqld]wait_timeout = 600 interactive_timeout = 600

查詢MySQL的最大連接數:

mysql> show variables like 'max_connections'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | max_connections | 100 | +-----------------+-------+ 1 row in set (0.00 sec)

查詢MySQL響應的最大連接數:

mysql> show global status like 'max_used_connections'; +----------------------+-------+ | Variable_name | Value | +----------------------+-------+ | Max_used_connections | 5 | +----------------------+-------+ 1 row in set (0.00 sec)

說明:本地環境沒什么參考價值,但是就上面的數據而言,MySQL過去所響應的最大連接數小于其允許的最大連接數,所以不會出現1040錯誤。
MySQL比較理想的最大連接數計算方式為:

max_used_connections / max_connections * 100% ≈ 85%

即最大連接數占上限連接數的85%左右,如果發現比例在10%以下,MySQL服務器連接數上限設置的過高了。

問題找到解決辦法

?

1、mysql -u root -p 進入不了,同樣出現上述錯誤。

?

2、修改/etc/mysql/my.cnf(ubuntu系統,其他系統在/etc/my.cnf

[mysqld] port=3306 #socket=MySQL skip-locking set-variable = key_buffer=16K set-variable = max_allowed_packet=1M set-variable = thread_stack=64K set-variable = table_cache=4 set-variable = sort_buffer=64K set-variable = net_buffer_length=2K set-variable = max_connections=1000

?

3、重啟

?

代碼如下 復制代碼

mysql /etc/init.d/mysql restart

?

搞定了。

?

總結

?

MySQL服務器所支持的最大連接數是有上限的,因為每個連接的建立都會消耗內存,因此客戶端在連接到MySQL?Server處理完相應的操作后,應該斷開連接并釋放占用的內存。

如果MySQL?Server有大量的閑置連接,不僅會白白消耗內存,而且如果連接一直在累加而不斷開,最終肯定會達到MySQL?Server的連接上限數,這會報'too?many?connections'的錯誤。

對于wait_timeout的值設定,應該根據系統的運行情況來判斷。在系統運行一段時間后,可以通過show?processlist命令查看當前系統的連接狀態,如果發現有大量的sleep狀態的連接進程,則說明該參數設置的過大,可以進行適當的調整小些。

?

轉載于:https://www.cnblogs.com/luoahong/articles/9003446.html

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的too many connections 解决方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。