發(fā)現(xiàn)問題
最近在項目中遇到一個問題,由于連接數(shù)過多,提示 “Too many connections” ,需要增加連接數(shù)。
我在 /etc/my.cnf中修改了:
max_connections = 2000
但是, 實際連接數(shù)一直被限制在 214:
mysql> show variables like "max_connections"; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | max_connections | 214 | +-----------------+-------+ 1 row in set
思考
如果我設(shè)置連接小于214時,比如 200,那么實際連接數(shù)就是 200,也就是說,我的配置文件是沒有問題的。
查 MySQL 官方文檔,里面說了:
The maximum number of connections MySQL can support depends on the quality of the thread library on a given platform, the amount of RAM available, how much RAM is used for each connection, the workload from each connection, and the desired response time. Linux or Solaris should be able to support at 500 to 1000 simultaneous connections routinely and as many as 10,000 connections if you have many gigabytes of RAM available and the workload from each is low or the response time target undemanding. Windows is limited to (open tables × 2 + open connections) < 2048 due to the Posix compatibility layer used on that platform.
Increasing open-files-limit may be necessary. Also see Section 2.5, “Installing MySQL on Linux”, for how to raise the operating system limit on how many handles can be used by MySQL.
大概意思是 MySQL 能夠支持的最大連接數(shù)量受限于操作系統(tǒng),必要時可以增大 open-files-limit。換言之,連接數(shù)與文件打開數(shù)有關(guān)。
解決方法
[root@sqzr ~]# ulimit -n 1024
可知,操作系統(tǒng)最大文件描述符限制為 1024。
更改 MySQL 在 Linux 的最大文件描述符限制,編輯 /usr/lib/systemd/system/mysqld.service
文件,在文件最后添加:
LimitNOFILE=65535 LimitNPROC=65535
保存后,執(zhí)行下面命令,使配置生效
$ systemctl daemon-reload $ systemctl restart mysqld.service
實際連接數(shù)到 2000 了,解決
mysql> show variables like "max_connections"; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | max_connections | 2000 | +-----------------+-------+ 1 row in set
參考
https://dev.mysql.com/doc/refman/5.7/en/too-many-connections.html
https://www.oschina.net/question/853151_241231
總結(jié)
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com