记一次服务器挂掉,cpu占用过大的问题

凌晨一点电话:咚咚咚


喂:服务器挂掉了,你查查看问题,然后处理下。

我:好的。


从日志看几乎所有的logic日志全都挂掉,不再打印日志,然后logic进程僵死,占用cpu百分90多,有些可怕。


第一反应是逻辑循环问题。

因为是公司自己的框架采用lua编写。单进程单线程。

网上找了很多这个,查了下都是top -H , jstack, gdb等。

但是对于我们的项目不管用啊,jstack不能用,gdb没有,top -H 是单线程单进程。就显示一行没了。


然后看了下挂掉的日志,都是在凌成00:00分挂掉的,然后想到了定时器问题,(我们项目会在这个时间点,定时处理一些事情)


加上当天更新了资料片,新的表格。然后使用git log 查看到底策划加了什么表格,对比定时器的问题。找到添加的新表格。


然后逐个对比,这个效率很慢,可是没办法,就这样磨着磨着,发现策划加的一个表定时器时间设置为-1.


这个肯定有问题啊,  然后通过封装的定时器代码,找到源代码,添加了一个验证

assert(time>=0 )

杀死对应的logic进程,重启,然后全服更新代码。


至此解决。


猜你喜欢

转载自blog.csdn.net/qq_37347705/article/details/80079945