mysql调优最大连接数

时间:2022-12-13 08:04:22

一、mysql调优

1.1 报错:

Mysql: error 1040: Too many connections

1.2 原因:

1、访问量过高,MySQL服务器抗不住,这个时候就要考虑增加从服务器分散读压力。
2、MySQL配置文件中max_connections值过小,默认151。

1.3 最优计算方法:

服务器响应的最大连接数值占服务器上限连接数值的比例值在10%以上,如果在10%以下,说明mysql服务器最大连接上限值设置过高。

Max_used_connections / max_connections * 100% = 2/151 *100% ≈ 1%

1.4 法一,临时生效方法

#默认最大连接数
mysql> show variables like '%max_connections%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 151 |
+-----------------+-------+
1 row in set (0.00 sec) #调整最大连接数
mysql> set global max_connections = 1000;
Query OK, 0 rows affected (0.00 sec) #查看最大连接数
mysql> show variables like '%max_connections%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 1000 |
+-----------------+-------+
1 row in set (0.00 sec)

#限制每个用户session连接数
mysql> show global status like 'Max_used_connections';
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| Max_used_connections | 152 |
+----------------------+-------+
1 row in set (0.00 sec) 备注: 1、max_connections :是对整个服务器的用户限制,整个服务器只能开这么多session,而不考虑用户。这个参数实际起作用的最大值(实际最大可连接数)为16384
2、max_user_connections:限制每个用户的session连接个数,例如max_user_connections=1 ,那么用户u1只能连接的session数为1,如果还有用户u2,还是可以连接,但是连接数仍然为1。 

1.5 法二:永久生效方法

[root@a1 mysql]# egrep -v "#|^$" my.cnf
[mysqld_safe]
err-log=/var/log/mysqld.log
pid-file=/var/lib/mysql/mysqld.pid
default-character-set = utf8
[mysqld]
port = 3306
socket = /tmp/mysql.sock
innodb_buffer_pool_size=2GB #调优创建事务报错
basedir = /roobo/server/mysql
datadir = /roobo/mysqldata/database
pid-file = /var/lib/mysql/mysql.pid
character_set_server = utf8
log-bin = /roobo/server/mysql/data/mysql-bin
server_id = 1
log-error=/var/log/mysqld.log
max_connections=1000 #调优最大连接数报错

#重启服务

/etc/init.d/mysqld restart