找回密碼
 註冊
搜索
查看: 10472|回復: 1

MySQL 資料庫連接過多的錯誤,可能的原因分析及解決辦法(mysql_connect: Too many con

[複製鏈接]
發表於 2007-4-1 21:47:10 | 顯示全部樓層 |閱讀模式
系統不能連接數據庫,關鍵要看兩個數據:  

    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作配置文件,設置類似,但設置的格式要稍作變通。

Reference: http://www.xker.com/edu/database/123/0671109575536976.html
 樓主| 發表於 2007-4-1 21:50:16 | 顯示全部樓層

MySQL 5.0 for Windows - Too many connections 問題解決辦法

修改 my.ini

在[mysqld]區段加入

max_connections = 32000

即可解決此問題!

MySQL內定max_connections為100,因此只要稍微多點人存取資料庫,可能就會出現Too many connections的問題,改大即可!
回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

Archiver|手機版|彩色筆小沛的知識庫

GMT+8, 2024-11-21 18:38 , Processed in 0.018837 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回復 返回頂部 返回列表