MySQL 連線數相關引數設定

2022-08-14 02:39:12 字數 3108 閱讀 2618

當我們的資料庫伺服器遇到如下的錯誤: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...