MySQL合理设置最大连接数、最大并发数(持久化设置)

当程序出现MySQL: ERROR 1040: Too many connections的错误信息时,抛却真的是访问量过高,MySQL服务器抗不住的情形,还有一种原因:你的MySQL数据库设置的max_connections值过小。

一、查看设置

查看max_connections设置。

查看max_connections设置

如果当前业务系统确实MySQL并发连接数过高,可以在结合服务器性能的情形下,适当调整max_connections参数。但是不能盲目调整该值,MySQL会为每个连接提供连接缓冲区,连接数越大,就会开销越多的内存。

二、如何平衡

查看当前最大使用连接数:

show global status like 'Max_used_connections';

查看当前最大使用连接数

对于mysql服务器最大连接数值的设置范围比较理想的是:服务器使用的最大连接数值占服务器上限连接数值的比例值在10%以上,如果在10%以下,说明mysql服务器最大连接上限值设置过高。

max_used_connections / max_connections * 100% (理想值≈ 85%) 

三、设置最大连接数

3.1 方法1

set GLOBAL max_connections=1024;

这种方式修改,修改的是内存配置,重启后会失效。

3.2 方法2

修改配置文件/var/my.cnf或者/var/my.cnf.d/server.cnf

修改mysql配置文件my.cnf,在[mysqld]段中添加或修改max_connections值:
max_connections=1024

这种设置需要重启mysql,是永久修改。

3.3 方法3

这种方式适合mysql 8以后的版本:

mysql> set persist max_connections=200;
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like '%max_connections%';

方法3

四、检查是否生效

如果没有生效,检查下mysql允许打开的文件数,修改服务配置:

sudo vi /usr/lib/systemd/system/mariadb.service

添加如下内容:

[Service]新添加两行如下参数:
LimitNOFILE=10000
LimitNPROC=10000

重载系统服务,并重启mysql:

systemctl --system daemon-reload
systemctl restart mariadb.service

References:

  1. MySQL 8 新特性之持久化全局变量的修改
  2. MySQL Persisted System Variables
  3. Mysql 连接数,最大并发数设置
  4. MySQL ERROR 1040: Too many connections
赞(1)
未经允许禁止转载:优米格 » MySQL合理设置最大连接数、最大并发数(持久化设置)

评论 抢沙发

合作&反馈&投稿

商务合作、问题反馈、投稿,欢迎联系

广告合作侵权联系