这篇文章主要记录解决Error while sending STMT_PREPARE packet. mysql has gone away,做个记录可能不是最优办法。 问题情况描述:php+workerman 客户端是闸机检票,通过udp协议与服务器连接,近期发现错误日志中出现这两个错误
Error while sending STMT_PREPARE packet.
mysql has gone away
已经有一段时间了,之前没关注过,近期影响了检票,于是查了一下,发现出现Error while sending STMT_PREPARE packet. 这个错误之后,一般会有十分钟的mysql has gone away 的错误,有的时候会出现半个小时,此错误不影响后台及移动端应用
1,查看mysql运行时间,170多天,所以不会是mysql宕机 2,开启了慢查询日志,设置时间为5s 3,修改database.php 文件中的断线重连改为true
由于是生产环境且离现场比较远,不方便调试,先观察一天,到第二天果然还是这两个错误,继续调整。
1,慢查询日志中有一条记录 上面的时间记录是23:08:41,后面跟了个 时间戳,这个时间戳正好跟记录的时间相差8小时整
use database
set timestamp = 时间戳
慢sql
2、查询了下这条sql 的大小发现为80M以上 3、修改了max_allowed_packet 的值到128M; 4、重启mysql ,大概有10分钟的时间报错mysql has gone away 网站还有后台是正常的 5、修改wait_timeout到48小时,原来是8小时,重启之后发现没生效,又同时修改了一下,interactive_time 到48小时,重启之后发现可以了。
第二天一切正常了
|