<span>connection was bad 真实案例</span>

####################################

一、背景:

         业务反映他们程序端日志最近老有“connection was bad”报错,

         服务端程序语言为:golang

         数据库驱动程序:golang自带的驱动

         数据库架构:lvs+kingshard+mysql的一主多从集群

      

具体报错日志如下图也:

 

 

 

业务方程序访问数据库:

 

 

 

 

二、原因:

        由于业务方之前有大量的慢查询,当时为了不让数据库奔溃,跟业务商量后,决定暂时杀掉这些慢查询,以免影响其他查询,所以,当时就给这个mysql集群的每个实例都配置了一个杀掉慢查询定时任务,该任务如下:

/usr/local/bin/pt-kill --host=xxx --user=root --password=root --match-info=select|SELECT --victims=all --interval 30 --busy-time 300 --kill --print --daemon

 

       由于该任务中配置了-match-info=select|SELECT 和 --busy-time 300,表示查询时间超过了300s的sql就会被pt-kill工具给杀掉,因此业务方的sql由于有慢查询,且时间超过了300s,所以就会给业务方直接杀掉了,因此报该错误,由于时间好几个月了,自己也忘记了配置的这个任务,因此定位时间花了我一个周,开始以为是业务方没有按照lvs的连接超时机制来配置,然后让业务方按照要求配置,结果业务方按照要求配置了后,还是有这样的报错,于是业务方拿出了sql语句,开始怀疑是慢查询,我这边在kingshard日志中也获取到了这个sql的报错,于是手动直连一个数据库从库进行查询,结果在300s的时候就出现了:ERROR 2013 (HY000): Lost connection to MySQL server during query

     于是,开始怀疑到了pt-kill定时任务,结果一查看,果然有这个pt-kill任务在跑。

 

三、解决:

         和业务商量后,决定这个定时任务暂时还是不取消,业务自己改进下sql。

 

##################################

全部评论

相关推荐

10-12 19:08
666 C++
花开蝶自来_:技能:听动物叫,让雪豹闭嘴
点赞 评论 收藏
分享
沉淀一会:1.同学你面试评价不错,概率很大,请耐心等待; 2.你的排名比较靠前,不要担心,耐心等待; 3.问题不大,正在审批,不要着急签其他公司,等等我们! 4.预计9月中下旬,安心过节; 5.下周会有结果,请耐心等待下; 6.可能国庆节前后,一有结果我马上通知你; 7.预计10月中旬,再坚持一下; 8.正在走流程,就这两天了; 9.同学,结果我也不知道,你如果查到了也告诉我一声; 10.同学你出线不明朗,建议签其他公司保底! 11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务