使用C3P0连接MySQL出现大量的Sleep状态连接的处理方法

在MySQL中使用show processlist命令查看的时候,发现有大量Sleep状态的连接,消耗了大量的资源,尤其在使用阿里云RDS的时候会出现连接数超标的情况。
因为数据库连接池使用的是C3P0,原来minPoolSize和initialPoolSize都设置的是1,需要将二者的值都修改成0,即只有在使用的时候才进行数据库连接。还需要将MySQL的wait_timeout的值设置的小一些,比如90,同时还需要注意将C3P0中的maxIdleTime值小于wait_timeout的值。

参考资料:

c3p0 how to shutdown all the database connections and re-open them when need?
c3p0 maxIdleTime is same as wait_timeout of mysql?

发表评论

电子邮件地址不会被公开。 必填项已用*标注