mysql資料庫連線過多的錯誤

2022-04-08 18:53:04 字數 1647 閱讀 9097

問:怎樣解決mysql連線過多的錯誤? 答:系統不能連線資料庫,關鍵要看兩個資料: 1、資料庫系統允許的最大可連線數max_connections。這個引數是可以設定的。如果不設定,預設是100。最大是16384。 2、資料庫當前的連線線程數threads_connected。這是動態變化的。 檢視max_connections、max_connections的辦法見後。

如果 threads_connected == max_connections 時,資料庫系統就不能提供更多的連線數了,這時,如果程式還想新建連線線程,資料庫系統就會拒絕,如果程式沒做太多的錯誤處理,就會出現類似強壇的報錯資訊。

因為建立和銷毀資料庫的連線,都會消耗系統的資源。而且為了避免在同一時間同時開啟過多的連線線程,現在程式設計一般都使用所謂資料庫連線池技術。

但資料庫連線池技術,並不能避免程式錯誤導致連線資源消耗殆盡。

這種情況通常發生在程式未能及時釋放資料庫連線資源或其他原因造成資料庫連線資源不能釋放,但強壇系統估計不會發生這種低階的程式設計錯誤。 該錯誤的簡便的檢查辦法是,在重新整理強壇頁面時,不斷監視threads_connected的變化。如果max_connections足夠大,而 threads_connected值不斷增加以至達到max_connections,那麼,就應該檢查程式了。當然,如果採用資料庫連線池技術, threads_connected增長到資料庫連線池的最大連線線程數時,就不再增長了。

從強壇出錯的情況看,更大的可能性是資料庫系統沒能進行適當地配置。下面提出一點建議。供參考

讓你們的工程師把mysql的最大允許連線數從預設的100調成32000。這就不會老出現連線過多的問題了。

檢視max_connections

進入mysql,用命令:

show variables

檢視資料庫最大可連線數的變數值:

max_connections

檢視threads_connected 進入mysql,用命令:

show status檢視當前活動的連線線程變數值:

threads_connected設定max_connections 設定辦法是在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=32000修改完畢後,重啟mysql即可。當然,為了確保設定正確,應該檢視一下max_connections。 注意: 1、雖然這裡寫的32000。但實際mysql伺服器允許的最大連線數16384; 2、除max_connections外,上述其他配置應該根據你們系統自身需要進行配置,不必拘泥; 3、新增了最大允許連線數,對系統消耗增加不大。 4、如果你的mysql用的是my.ini作配置檔案,設定類似,但設定的格式要稍作變通。

mysql資料庫連線過多的錯誤

問 怎樣解決mysql連線過多的錯誤?答 系統不能連線資料庫,關鍵要看兩個資料 1 資料庫系統允許的最大可連線數max connections。這個引數是可以設定的。如果不設定,預設是100。最大是16384。2 資料庫當前的連線線程數threads connected。這是動態變化的。檢視max ...

輕鬆解決 mysql資料庫連線過多的錯誤

問 怎樣解決mysql連線過多的錯誤?答 系統不能連線資料庫,關鍵要看兩個資料 1 資料庫系統允許的最大可連線數max connections。這個引數是可以設定的。如果不設定,預設是100。最大是16384。2 資料庫當前的連線線程數threads connected。這是動態變化的。檢視max ...

MySQL連線過多

現象 error 1040 too many connections 我只能將伺服器重啟,然後更改連線超時 一般mysql可以設定 max connections 500 mysql 預設好像是100 可以參考 高效能mysql 第八章338 342 如果不對連線時間進行控制,有些程式設計師寫 的時...