在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?