MYSQL的wait_timeout与连接池相关

时间:2021-01-04 18:36:45

mysql有一个很重要的配置参数   wait_timeout    它代表着连接长时间空闲的的情况下如何管理


当你的程序出现数据库连接问题的时候,第一时间要检查wait_timeout。它的默认值是28800,即等待8小时后关闭。原本此值是一个非常重要数据,必须谨慎配置。但是网上经常有人建议配置很高来解决问题,其实这是一个坑,过高的配置在遇到程序退出时(或者业务频繁启动关闭),连接无法主动释放,然后数据库就一直等待直到wait_timeout,如果多次出现这种情况,那将会耗尽数据库连接资源。

正确的配置方式是根据自己业务的情况合理配,在业务很稳定的情况下可以提高配置值。在业务经常需要启动关闭的情况下适当调低。调整后,在连接池配置中也应该修改长时间连接连接有效性检查的相关配置,如下(仅作建议,请自行测试)


c3p0配置

idleConnectionTestPeriod  为 wai_timeout的50%


dbcp配置  (tomcat连接池)

timeBetweenEvictionRunsMillis 为 wai_timeout的50%


proxool 配置

maximum-connection-lifetime 小于 wai_timeout