當我們的資料庫伺服器遇到如下的錯誤:error: too many connections
一種可能性就是我們的壓力確實很大,需要增加伺服器硬體資源或者增加資料庫伺服器。但是大多數情況下是我們的連線數配置不合理造成的。
max_connections
max_used_connections
connections
max_user_connections
back_log
max_connect_errors
接下來我們逐一來分析這些引數的意義:
max_connections:
是指整個資料庫伺服器所允許的最大連線數,可使用以下命令進行查詢:
在windows平台該數值一般預設為151,如果超過該數值,由於限制那麼系統就會產生等待的情況,從而影響系統的併發量和吞吐量。
通常情況下,我們會根據伺服器的效能適當的調整乙個合適的值,比如500-800,但是要注意該數值的最大值為16384,請不要超過這個值。
由於資料庫會為每個連線,分配一定記憶體資源和緩衝區,通常為每個連線分配256kb資源,所以設定要慎重一些,建議不要超過實際使用者的1.5倍。
這個命令用於查詢,伺服器自啟動以來執行期間的最大連線數。
這個命令可以查詢伺服器自啟動以來的連線數的總數,這是乙個累計值,可以檢視資料庫連線的頻率。
通過檢測這些資料,我們就能得到是否需要增加max_connections的證據。
如果max_used_connections 已經等於或者接近max_connections,那麼我們就需要增加資料庫的最大值。
按照通用的20/80法則,我們建議留有20%的連線數用於系統備用,即max_used_connections/max_connections *100% < 80%。
按照經驗,我們會留比較大的連線數,比如留50%的連線數用於備用。
max_user_connections
是指對每個使用者允許的最大連線數。
一般情況下我們都會讓其保持預設值,除非有特定的需要或者臨時性的使用者,我們才做出限制。
該引數會限制單個使用者的最大連線值,通常是對單使用者併發使用者進行限制。
該引數是用來快取使用者連線的,相當於乙個排隊的連線池。
在資料庫達到最大連線數的時候,新的連線請求會被存放在堆疊中,並等待其他連線釋放資源。
如果等待的連線數超過這個值,那麼新的連線將不會被接受。
這個數值不能超過系統的tcp/ip連線的監聽佇列數,否則無效。
linux系統我們推薦設定為小於512的整數。
注意每個佇列會消耗256kb的記憶體資源。
該引數是指,當連線的錯誤數達到這個閾值的時候,系統會終止使用者的連線服務。
需要使用flush hosts來清除錯誤,否則就會報錯:
host *** is blocked because of many connection errors.unblock with 『mysqladmin flush-hosts』.
當資料庫達到這個閾值的時候,資料庫認定系統出現了乙個錯誤,並且會阻止該使用者後續的請求操作,除非使用命令重新整理系統。
如果是內網環境,建議可以將數值設定的高一點,並使用任務機制定期重新整理hosts。
指定mysql服務等待應答的時間,如果超時那麼客戶端會返回乙個錯誤,bad handshake。
在windows環境下預設值為10秒。
如果是區域網或者高併發的環境下,可以適當提高該數值,比如15-20 秒,以避免出現連線錯誤。
建議該數值要結合thread_cache_size建議適當提高該數值,以便提高更多的連線數。
該設定是用於提高資料庫伺服器的連線速度。
mysql在獲得連線請求的時候,會根據請求中的ip位址,來反向查詢伺服器的主機名,然後再次獲取該伺服器的ip位址。
如果兩次獲取的ip位址一致,那麼才會建立連線。
按照這種設計,一次連線會耗費較長的時間,主要是一種安全上的驗證。
但是我們不推薦在廣域網環境下,開啟這個設定,以防止黑客的攻擊。
設定Mysql連線數
mysql資料庫連線數過多導致系統出錯,系統不能連線資料庫,關鍵要看兩個資料 1 資料庫系統允許的最大可連線數max connections。這個引數是可以設定的。如果不設定,預設是100。最大是16384。2 資料庫當前的連線線程數threads connected。這是動態變化的。檢視max c...
Mysql連線數設定
在使用mysql資料庫的時候,經常會遇到這麼乙個問題,就是 can not connect to mysql server.too many connections mysql 1040錯誤,這是因為訪問mysql且還未釋放的連線數目已經達到mysql的上限。通常,mysql的最大連線數預設是100...
Tomcat連線數設定引數
在tomcat配置檔案server.xml中的配置中,和連線數相關的引數有 minprocessors 最小空閒連線線程數,用於提高系統處理效能,預設值為10 maxprocessors 最大連線線程數,即 併發處理的最大請求數,預設值為75 acceptcount 允許的最大連線數,應大於等於ma...