之前面试有被问到过最大连接数的设置,当时答的不理想,我们先来看高可用测试环境上的配置,与生产配置一样,
cpu配置:
CPU(s): 56
On-line CPU(s) list: 0-55
Thread(s) per core: 2
Core(s) per socket: 14
Socket(s): 2
内存配置:
free -g
total used free shared buffers cached available
Mem: 256 196 9 1 45 45 51
Swap: 63 0 63
缓冲池大小:
show variables like ‘innodb_buffer_pool_size’;
±------------------------±----------+
| Variable_name | Value |
±------------------------±----------+
| innodb_buffer_pool_size | 187904819200 |(175G)
±------------------------±----------+
show variables like ‘%max_connections%’;
±----------------±------+
| Variable_name | Value |
±----------------±------+
| max_connections | 10000 |
±----------------±------+
1 row in set (0.01 sec)
这台MySQL服务器最大连接数是10000,然后查询一下服务器响应的最大连接数:
show global status like ‘Max_used_connections’;
±---------------------±------+
| Variable_name | Value |
±---------------------±------+
| Max_used_connections | 63 |
±---------------------±------+
1 row in set (0.00 sec)
MySQL服务器过去的最大连接数是63,没有达到服务器连接数上限10000,应该没有出现1040错误,比较理想的设置是
Max_used_connections / max_connections * 100% ≈ 85%
如何修改最大连接数?
1,打开MySQL配置文件 my.ini 或 my.cnf查找 max_connections=修改为 max_connections= 服务里重起MySQL即可.
2,动态修改;
MySQL> set global max_connections=200。
重启失效。
提示:线上产品最后先动态修改,同时修改my.cnf文件,在夜深人静的时候进行重启,或MySQL master节点切换了进行重启。