最近MySQL總是報:1040 too many connections 的錯誤,怎麼折騰配置文件,調大連接數,增加:open_files_limit = 65535等等。還是會報錯誤,進入數據庫查詢:
mysql> show variables like '%max_connections%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 214 |
+-----------------+-------+
1 row in set (0.01 sec)
發現最大連接數總是變成了214。猜測應該不是配置文件的問題。
去網上搜索了一圈,參考這篇文章:https://blog.csdn.net/luckykapok918/article/details/79037091
由於我這裏有Ubuntu和centos2種系統環境,現在將我的操作整理下:
CentOS 7.5:
vim /usr/lib/systemd/system/mysqld.service
Ubuntu16:
sudo vim /lib/systemd/system/mysql.service
打開文件後服務配置文件後,配置文件底部加入或替換以下兩行設置:
LimitNOFILE=65535
LimitNPROC=65535
vim /lib/systemd/system/mysql.service
# MySQL systemd service file
[Unit]
Description=MySQL Community Server
After=network.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
PermissionsStartOnly=true
ExecStartPre=/usr/share/mysql/mysql-systemd-start pre
ExecStart=/usr/sbin/mysqld
ExecStartPost=/usr/share/mysql/mysql-systemd-start post
TimeoutSec=600
Restart=on-failure
RuntimeDirectory=mysqld
RuntimeDirectoryMode=755
LimitNOFILE=65535
LimitNPROC=65535
保存並退出,再讓系統重新加載新配置:
CentOS 7:
systemctl daemon-reload
systemctl restart mysqld.service
Ubuntu:
sudo systemctl daemon-reload
sudo service mysql restart
完成後應該就能解決問題了。
三、驗證
mysql> show variables like '%max_connections%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 1000 |
+-----------------+-------+
1 row in set (0.00 sec)