项目场景:
异常信息:
Mysql数据库报错,too many connection
结果就是导致⽆法连接数据库,微服务或者数据库客户端连接超时
原因分析:
MySQL默认的连接为100个,系统⾃带的连接数太⼩,连接的线程超过系统配置导致出现错误
解决方案:
可以通过部署多⼏个MysqlServer实例,物理分库:
#查看当前连接数
show full processlist;
#查看最⼤连接数
show variables like "max_connections";`
set global max_connections=1000``
mysql的连接数保持时间-默认 28800(8个⼩时)
#查看连接睡眠时间,默认是 28800,相对少调整这个,不能太短,也不能过⻓;
show global variables like 'wait_timeout'
wait_timeout解释:当⼀个客户端连接到MySQL数据库后,如果客户端不⾃⼰断开,也不做任何操作,MySQL数据库会将这个连接保留"wait_timeout"
这么⻓时间(单位是s,默认是28800s,也就是8⼩时),超过时间之后,MySQL数据库为了节省资源,就会断开这个连接
程序没及时关闭连接,产⽣过多sleep进程
注意:
上述是临时修改,启mysql会失效
永久修改可以通过修改mysql的配置/etc/my.cnf配置⽂件
搜索下mysql配置⽂件修改博⽂