解决Error while sending STMT_PREPARE packet. mysql has gone away

这篇文章主要记录解决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小时,重启之后发现可以了。

第二天一切正常了

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值