- 背景
服务器卡死,查看错误日志的时候提示的是软锁死。
- 分析
那时候大家都不懂是怎么回事,都是新手,只能上网百度解决方案。百度到的信息整理如下:
1.类似这种软锁死问题基本上就是自身代码逻辑问题,仔细走读代码,分析代码流程 一步一步测试,最终定位问题根源才会彻底解决问题。
2.服务器上的软件趋于崩溃,但是又没有崩溃的状态下
3.VM网卡驱动存在bug,处理高水位流量时存在bug导致CPU死锁
4.BIOS开启了超频,导致超频时电压不稳,容易出现CPU死锁;服务器电源供电不足,导致CPU电压不稳导致CPU死锁
5.如果CPU太忙导致喂狗(watchdog)不及时,此时系统会打印CPU死锁信息
然后师兄开始研究这个watchdog,昂,反正就是研究了很多方面的。
终于有一天,他开始top查看cpu的占用情况,发现cpu超超超负荷运行ing,运行某个代码时cpu占用率四千多。所以怀疑是代码出了问题。
- 解决
发现果然是代码出问题了,没有成功调用上GPU,全程用cpu在跑,但是由于那个代码要处理的数据量和计算量很大,所以,但凡这个程序一跑,cpu就会卡死。最后,改了代码,才可以解决这个问题。
- 总结一句
综上所述,可见百度得到的信息还是很沾边的,就是没办法立即确定是代码出了问题,但核心思想是:cpu负荷太重,就卡死了。
所以,但凡再遇到这些软锁死问题,先回头研究自己的代码有没有问题,再去想别的原因。然而一般情况下都是代码有点问题。