MySQL 5.7中的max_connections

Str*_*ung 15 mysql connection max

我遇到了一个问题,在MySQL max_connction的值是214后,我通过编辑设置1000 my.cnf中,就像如下:

hadoop@node1:~$ mysql -V
mysql  Ver 14.14 Distrib 5.7.15, for Linux (x86_64) using  EditLine wrapper
Run Code Online (Sandbox Code Playgroud)

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)
Run Code Online (Sandbox Code Playgroud)

我们可以看到,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
Run Code Online (Sandbox Code Playgroud)

保存混淆后重启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:~$ 
Run Code Online (Sandbox Code Playgroud)

现在,我们猜max_connection是1000,真的吗?

mysql> show variables like 'max_connections';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 214   |
+-----------------+-------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

这是214.我真的不明白这个结果,谁可以帮助我?谢谢!

小智 12

您可以手动设置值,例如

set global max_connections=500;
Run Code Online (Sandbox Code Playgroud)

但是,重新启动MySQL后,该值将重置为214.

解决方案取决于(版本)操作系统和MySQL版本.随着Ubuntu 16.04和MySQL> = 5.7.7以下工作:

systemctl编辑mysql

输入

[Service]
LimitNOFILE=8000
Run Code Online (Sandbox Code Playgroud)

保存,这将创建一个新文件

/etc/systemd/system/mysql.service.d/override.conf

并重新启动服务器:

systemctl daemon-reload
systemctl restart mysql
Run Code Online (Sandbox Code Playgroud)

对于其他环境: 无法在Ubuntu 15中为Mysql max-connections增加max_open_files


Sha*_*dow 10

关于max_connections设置的MySQL文档说:

增加此值会增加mysqld所需的文件描述符数.如果所需的描述符数量不可用,则服务器会减小max_connections的值.

这意味着您的MySQL服务器可能没有足够的资源来维护所需数量的描述符.

关于MySQL如何打开和关闭表的 MySQL文档清楚地表明:

table_open_cache和max_connections系统变量会影响服务器保持打开的最大文件数.如果增加一个或两个值,你可以遇到你的操作系统每个进程打开文件描述符的数量上强加的限制跑起来.许多操作系统允许您增加开放文件限制,尽管该方法因系统而异.请参阅操作系统文档以确定是否可以增加限制以及如何增加限制.


Moh*_*asi 5

请按照以下步骤操作:

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
Run Code Online (Sandbox Code Playgroud)

并将以下行更改或添加到文件/etc/mysql/mysql.conf.d/mysqld.cnf中:

[mysqld]
max_connections=110
Run Code Online (Sandbox Code Playgroud)

只是这个!@Mahdi_Mohammadi