我遇到了一个问题,在我通过编辑my.cnf设置1000之后,MySQL中max_connction的值是214,如下所示:
hadoop@node1:~$ mysql -V
mysql Ver 14.14 Distrib 5.7.15, for Linux (x86_64) using EditLine wrapper
MySQL版本:5.7
操作系统版本:ubuntu 16.04LTS
mysql> show variables like 'max_connections';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 151 |
+-----------------+-------+
1 row in set (0.00 sec)
正如我们所看到的,max_connections的变量值是151.然后,我编辑MySQL的配置文件。
yang2@node1:~$ sudo vi /etc/mysql/my.cnf
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
max_connections=1000
保存混淆后重启MySQL服务。
yang2@node1:~$ service mysql restart
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to restart 'mysql.service'.
Multiple identities can be used for authentication:
1. yangqiang,,, (yang2)
2. ,,, (hadoop)
Choose identity to authenticate as (1-2): 1
Password:
==== AUTHENTICATION COMPLETE ===
yang2@node1:~$
现在,我们猜max_connection是1000,真的吗?
mysql> show variables like 'max_connections';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 214 |
+-----------------+-------+
1 row in set (0.00 sec)
这是214.我真的不明白这个结果,谁可以帮助我? THX!
答案 0 :(得分:10)
正如max_connections设置中的MySQL文档所示:
增加此值会增加文件描述符的数量 mysqld需要。如果所需的描述符数不是 可用,服务器减少了max_connections的值。
这意味着您的MySQL服务器可能没有足够的资源来维护所需数量的描述符。
How MySQL Opens and Closes Tables上的MySQL文档清楚地表明:
table_open_cache和max_connections系统变量会影响 服务器保持打开的最大文件数。如果你增加一个或 这两个值,你可能会遇到你的限制 操作系统对每个进程数量的打开文件描述符。 许多操作系统允许您增加打开文件限制, 虽然该方法因系统而异。咨询你的 操作系统文档,以确定是否可能 增加限制以及如何操作。
答案 1 :(得分:9)
您可以手动设置值,例如
set global max_connections=500;
但是,重启MySQL后,该值将重置为214。
解决方案取决于(版本)操作系统和MySQL版本。随着Ubuntu 16.04和MySQL> = 5.7.7以下工作:
systemctl edit mysql
输入
[Service]
LimitNOFILE=8000
保存,这将创建一个新文件
/etc/systemd/system/mysql.service.d/override.conf
并重新启动服务器:
systemctl daemon-reload
systemctl restart mysql
对于其他环境:Can not increase max_open_files for Mysql max-connections in Ubuntu 15
答案 2 :(得分:1)
在session required pam_limits.so
中添加/etc/pam.d/common-session
(默认情况下通常不存在)。
在/etc/security/limits.conf
中您可以添加一些限制:
* hard nofile 8192
* soft nofile 4096
同时使用ulimit -a
打开文件限制进行检查。
这可以通过ulimit -n 4096
确保最后重启。
答案 3 :(得分:0)
请遵循以下步骤:
cp /lib/systemd/system/mysql.service /etc/systemd/system/
echo -e "\r\nLimitNOFILE=infinity" >> /etc/systemd/system/mysql.service
echo "LimitMEMLOCK=infinity" >> /etc/systemd/system/mysql.service
sudo systemctl daemon-reload
sudo service mysql restart
然后将以下行更改或添加到文件 /etc/mysql/mysql.conf.d/mysqld.cnf 中:
[mysqld]
max_connections=110
就这个! @Mahdi_Mohammadi
答案 4 :(得分:0)
1。编辑mysql服务文件
#sudo cat /etc/systemd/system/multi-user.target.wants/mysql.service
# MySQL systemd service file
[Unit]
Description=MySQL Community Server
After=network.target
[Install]
WantedBy=multi-user.target
[Service]
Type=forking
User=mysql
Group=mysql
PIDFile=/run/mysqld/mysqld.pid
PermissionsStartOnly=true
ExecStartPre=/usr/share/mysql/mysql-systemd-start pre
ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid
TimeoutSec=600
Restart=on-failure
RuntimeDirectory=mysqld
RuntimeDirectoryMode=755
##this bellow for tuneup
LimitNOFILE=infinity
LimitMEMLOCK=infinity
2.edit /etc/mysql/mysql.conf.d/mysqld.cnf max_connections = 99999