
我的伺服器上有 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 記憶體不足可能是災難性的情況,最好避免。
不正確調整時會發生什麼情況的範例:
我之前提供的一些調整建議:
連結到InnoDB 記憶體使用情況包含一個計算 InnoDB 記憶體使用量的公式,您可以將其插入電子表格中以計算每個執行緒的記憶體使用量。
以下是有關以下內容的更多資訊:MySQL 伺服器記憶體使用情況。
最終,您的目標應該是根據您的配置計算每個執行緒的最大記憶體使用量。計算完成後,您可以將最大連線數設定為正確的值。
答案2
在 1GB 機器上,我們通常將 max_connections 設為 750,不會出現任何問題
答案3
如果您使用 PHP,則編輯 php 設定檔(通常位於 /etc/php.ini)並將持久性變更為 OFF。
[MySQL];允許或阻止持久連結。 mysql.allow_persistent = 關閉
就這樣。重新啟動阿帕契。