MySQL設置上有一個max_connections參數,預設的默認值為「151」。當MySQL需要中高的使用量時,默認值是不夠用的,必須提高max_connections這個配置參數,如果沒有提高的情況下又超出這個預設值的使用數量,就會輸出「too many connections」錯誤。但max_connections這個配置數值不可以任意提高的,如果設置的數值超出伺服器資源,在實際運行上遇到很多用戶連接時,必然會遇到不可預期的問題。
但在 CentOS 7 中,把 max_connections 設置成1000,發現會有一種情況,max_connections 的數值會顯示「214」,為甚麼呢?
因為MySQL每開啟一個連線會開啟一些檔案,如果MySQL發現系統的開啟數量限制 open file 太小,不夠應付 max_connections 數量的設定,便會自動降低。所以,只要把這個數值同一時間提高就可以了。
提高 open files limit,需要分別設置系統的 ulimit 和 MySQL 啓動參數這兩個地方。
修改 ulimit:
- 查看系統的 ulimit 配置
# ulimit -a | grep "open files"
- 修改配置檔
# vi /etc/security/limits.conf
加入配置項,只針對mysql這個用戶
mysql hard nofile 10000 mysql soft nofile 10000
- 需要重啓伺服器讓其配置生效
修改 MySQL 啓動參數:
- 修改啓動檔
# vi /lib/systemd/system/mysql.service
在 [Service] 區域,加入配置參數
LimitNOFILE=10000
- 由於改動了mysql.service,需要先執行 systemctl daemon-reload,再執行重啓
# systemctl daemon-reload # systemctl restart mysql
修改完成後,可以進入mysql確認:
- 登入 MySQL
# mysql -u root -p
- 執行查閱設置的指令
mysql> show global variables like '%open_files_limit%'; mysql> show global variables like '%max_connections%';
鏈結到這頁!