MySQL 5.7中的max_connections

时间:2016-10-11 11:59:46

标签: mysql max connection

我遇到了一个问题,在我通过编辑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!

5 个答案:

答案 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