MySQL:The last packet sent successfully to the server was 0 milliseconds ago.

出现异常"The last packet sent successfully to the server was 0 milliseconds ago."的大部分原因是由于数据库回收了连接,而系统的缓冲池不知道,继续使用被回收的连接所致的

解决方法:

(1)使用JDBC URL中使用autoReconnect属性

复制代码
&autoReconnect=true&failOverReadOnly=false

(2) 修改MySQL的参数. /etc/my.cnf 添加

将mysql回收空闲连接的时间变长,mysql默认回收时间是8小时,可以在mysql目录下的my.cnf中增加下面配置,将时间修改长一点

复制代码
[mysqld]
wait_timeout=31536000
interactive_timeout=31536000

(3)重启mysql

复制代码
service mysql restart

原因分析:

(1)大量数据访问情况下,mysql connection连接有可能失效

(2)长时间不妨问,connection会失效

也可以通过配置,让缓冲池去测试连接是否被回收,如果被回收,则不继续使用,以dbcp为例:

复制代码
#SQL查询,用来验证从连接池取出的连接
dbcp.validationQuery=SELECT 1
#指明连接是否被空闲连接回收器(如果有)进行检验,如果检测失败,则连接将被从池中去除
dbcp.testWhileIdle=true
#在空闲连接回收器线程运行期间休眠的时间值,以毫秒为单位,一般比minEvictableIdleTimeMillis小
dbcp.timeBetweenEvictionRunsMillis=300000
#在每次空闲连接回收器线程(如果有)运行时检查的连接数量,最好和maxActive一致
dbcp.numTestsPerEvictionRun=50
#连接池中连接,在时间段内一直空闲,被逐出连接池的时间(1000*60*60),以毫秒为单位
dbcp.minEvictableIdleTimeMillis=3600000
相关推荐
鹿角片ljp5 分钟前
动态SQL实现模糊查询
数据库·sql·oracle
晓风残月淡5 分钟前
mysql备份恢复工具Percona XtraBackup使用教程
数据库·mysql
DomDanrtsey8 分钟前
oracle所有表中文与字段最大长度检测
数据库·oracle
Z...........12 分钟前
数据库表设计
数据库
tudficdew16 分钟前
使用Python操作文件和目录(os, pathlib, shutil)
jvm·数据库·python
浒畔居18 分钟前
工具、测试与部署
jvm·数据库·python
云和数据.ChenGuang19 分钟前
python对接mysql和模型类的故障
数据库·python·mysql·oracle·conda·virtualenv
2301_8223827621 分钟前
开发一个简单的Python计算器
jvm·数据库·python
2501_9209992725 分钟前
Django全栈开发入门:构建一个博客系统
jvm·数据库·python
_F_y29 分钟前
MySQL用户管理
android·mysql·adb