MySQL 連線數過多

MySQL 連線數過多

我的伺服器上有 7 個資料庫。我們的伺服器有 512 MB RAM,今晚我將其升級到 2GB,並配備 2.4 單處理器。

我收到有關超出連接限制的錯誤。隨著 RAM 的增加,連線數也可以增加嗎?目前它設定為 200,但考慮到 JOIN 等因素,單一頁面可以連接到 3-4 個資料庫。

我們設定了這麼多資料庫只是為了組織。我們的所有資料庫總共約有 250-300 個表。

任何意見,將不勝感激 :)

更新

事實證明,我的聯繫比我想像的要多得多......

使用 2GB RAM 和 2.4 單核心時,50 個使用者連線是否準確,還是應該增加?

[mysqld]
safe-show-database

skip-locking
safe-show-database

interactive_timeout=30
wait_timeout=30
connect_timeout=10
max_user_connections=50
max_connections=1000

key_buffer=64M
join_buffer=2M
record_buffer=2M
sort_buffer=4M
max_allowed_packet=24M

query_cache_limit = 2M
query_cache_size = 64M
query_cache_type = 1

tmp_table_size=128M
table_cache=2048
thread_cache=256
thread_concurrency=1

答案1

您應該能夠大幅增加您的聯繫。但是,如果您沒有正確調整每個執行緒的記憶體使用量,則可能會面臨 MySQL 記憶體不足的風險。 MySQL 記憶體不足可能是災難性的情況,最好避免。

不正確調整時會發生什麼情況的範例:

MySQL由於記憶體不足而不斷重啟

我之前提供的一些調整建議:

如何在Mysql中設定my.cnf使得連線數不受限制?

連結到InnoDB 記憶體使用情況包含一個計算 InnoDB 記憶體使用量的公式,您可以將其插入電子表格中以計算每個執行緒的記憶體使用量。

以下是有關以下內容的更多資訊:MySQL 伺服器記憶體使用情況

最終,您的目標應該是根據您的配置計算每個執行緒的最大記憶體使用量。計算完成後,您可以將最大連線數設定為正確的值。

答案2

在 1GB 機器上,我們通常將 max_connections 設為 750,不會出現任何問題

答案3

如果您使用 PHP,則編輯 php 設定檔(通常位於 /etc/php.ini)並將持久性變更為 OFF。

[MySQL];允許或阻止持久連結。 mysql.allow_persistent = 關閉

就這樣。重新啟動阿帕契。

相關內容