一次系统性能问题解决经历

新项目发布后非常不稳定,主要的问题集中在数据库频繁卡死。

错误提示[quote]Deadlock found when trying to get lock; try restarting .......... [/quote]

开始寻找问题原因,查看慢速SQL查询,发现主要问题在一张5000多条数据的点位信息表。
按理来说,这个数据量对mysql来说是一个非常轻松的数据量,为什么会频繁出现超时问题?
查看查询条件,包含一个字段的 in 查询。照理来说也不应该有那么慢,数据量太低,表中的字段有多个varchar字段,文字太多?按照以往的经验来判断,应该不会,其他项目中相同数量级带varchar字段的表也没有出现类似问题。

观察服务器和本地测试,会发现问题出现的有时间规律,刚启动时查询没有问题,请求时间平均在100多ms左右,过一段时间,没有任何访问的情况下,系统已经变的很慢,开始考虑是不是后台运行的定时程序出问题了。

沿着这个思路排查,发现一个定时程序是定时将该表中未计算的数据提取后,与另外一张12万数据量的表进行逐行计算,且在每交叉计算后,伴随着一句update。update数据量是相当大。问题应该就在这里。查看代码去除不合理的写法后,系统恢复稳定,请求速度恢复正常。

也许问题很简单,问题的关键还是对问题的定位,线索很重要。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值