今天早上,zabbix服务器监控突然发出报警,提示CPU占用过高。

以下为追查原因的过程,做此记录,方便遇到同样问题的朋友进行排查
查看占用cpu高的进程
使用top命令找出cpu占用过高的进程,如图所示,查找TIME+那列,之前占用过高的时候,时间达到了几十分钟。进程占用cpu高,一般是由于进程长时间占用cpu,又没有主动释放占用。

接着按下键盘的C键,会出现详细信息,可以使用sudo gdb -p 端口号找到具体出现问题的代码

分析信息,找出是因为supervisor进程导致CPU占用过高,里面处理的主要任务是消耗lumen的redis队列,队列中主要处理curl请求,在出现问题时,supervisor默认超时时间为30S,分析问题大概就出现在这里,因为大量curl超时堆积,导致进程无法完成退出
解决问题
分析出是因为curl的问题,首页将supervisor超时时间设置为3S,然后在代码逻辑中,设置适当的curl请求超时时间,设置完成后,重新加载supervisor配置文件,cpu占用成功降了下来:

本文记录了Zabbix服务器监控发出CPU占用过高警报的排查过程。通过使用top命令定位到supervisor进程导致的问题,发现大量curl请求超时堆积。调整supervisor超时时间和代码逻辑后,成功降低CPU占用。
193

被折叠的 条评论
为什么被折叠?



