说明
核心点:
- 1、默认超时时间是28800秒,即8小时。
- 2、最大连接数默认是151个(上限为1000)。
- 3、当查询数量大于其最大连接数且没有超过默认时间时,后面的请求将无法响应,即会返回Too many connections错误信息,此时查询数据库show full processlist;可以发现大量的连接处于sleep状态。
- 4、临时优化方案:
set GLOBAL interactive_timeout=1800;
set GLOBAL wait_timeout=1800;
set GLOBAL max_connections=1000;
- 5、永久优化方案(测试发现并不生效):
#修改配置文件内容,没有的话就添加
max_connections=1000
interactive_timeout=1800
wait_timeout=1800
- 6、持久化方案
persisted_globals_load = ON # 8.0.0 添加,默认是 ON,表示 MySQL 启动时,读取数据⽬录下的 mysqld-auto.cnf ⽂件中的变量,设置为 OFF 时,则不会读取文件中的变量。
# persist 不仅修改了内存中的值,还会持久化到 mysqld-auto.cnf ⽂件中
mysql> set persist max_connections=1000;
mysql> set persist interactive_timeout=1800;
mysql> set persist wait_timeout=1800;
# 查看已持久化的参数
mysql> select * from performance_schema.persisted_variables;
+-----------------+----------------+
| VARIABLE_NAME | VARIABLE_VALUE |
+-----------------+----------------+
| max_connections | 1000 |
+-----------------+----------------+
+-----------------+----------------+
| interactive_timeout | 1800 |
+-----------------+----------------+
+-----------------+----------------+
| wait_timeout | 1800 |
+-----------------+----------------+
3 row in set (0.00 sec)
常用命令
# 查看 max_connections 的值
mysql> show variables like "max_connections";
# 查看已持久化的参数
mysql> select * from performance_schema.persisted_variables ;
# 清除所有的已持久化的变量
mysql> reset persist ;