出现异常”The last packet sent successfully to the server was 0 milliseconds ago.“的大部分缘由是因为数据库回收了链接,而系统的缓冲池不知道,继续使用被回收的链接所致的。mysql
以mysql为例:sql
第一种解决办法,就是将mysql回收空闲链接的时间变长,mysql默认回收时间是8小时,能够在mysql目录下的my.ini中增长下面配置,将时间改成1天。数据库
单位是秒,最大好像是24天:测试
[mysqld]线程
wait_timeout=86400server
第二种解决办法,能够经过配置,让缓冲池去测试链接是否被回收,若是被回收,则不继续使用,以dbcp为例:it
#SQL查询,用来验证从链接池取出的链接 dbcp.validationQuery=SELECT 1 #指明链接是否被空闲链接回收器(若是有)进行检验,若是检测失败,则链接将被从池中去除 dbcp.testWhileIdle=true #在空闲链接回收器线程运行期间休眠的时间值,以毫秒为单位,通常比minEvictableIdleTimeMillis小 dbcp.timeBetweenEvictionRunsMillis=300000 #在每次空闲链接回收器线程(若是有)运行时检查的链接数量,最好和maxActive一致 dbcp.numTestsPerEvictionRun=50 #链接池中链接,在时间段内一直空闲,被逐出链接池的时间(1000*60*60),以毫秒为单位 dbcp.minEvictableIdleTimeMillis=3600000io