查找CPU占用率达到100%的原因

  最近运行服务器程序,发现某个进程CPU占用率超过100%,有些奇怪,该进程功能很简单,主要是用来接受客户端请求,根据一些算法选择gate服务器,我们逻辑功能都是写在脚本层,我查看了该进程脚本层代码,比较简单,没有使用while循环,那问题肯定是在C++底层上,就决定调试下,步骤如下。

1、查找进程id,使用ps命令,截图如下:

发现出问题的进程id为18010。

2、查找进程内部出问题的线程,使用命令top –H –p 18010,截图如下:

发现出问题的线程id是18101。

3、查看进程运行堆栈,使用命令pstack 18010,截图如下:

发现改线程在运行drop_list_tick函数。

4、查看drop_list_tick函数代码,截图如下:

该函数内部有个while循环,由于drop_list没有使用pop_front函数删除第一个元素,导致会一直循环下去,所以就出现了死循环,修改后如下:

总结:其实该问题很简单,就是写代码时候,逻辑不太严谨造成的,不过因为这个问题也学会了一些调试技巧,收获还是不错的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
宝塔面板是一款功能强大的服务器管理面板,可以帮助用户快速部署和管理服务器。当用户登录宝塔面板,系统会进行一些初始化操作,例如加载面板的各种配置和插件,以及获取服务器的各种状态信息。这些操作可能会导致 CPU 占用率升高,但通常不会持续很长间。 如果宝塔面板登录 CPU 占用率一直保持在高水平,可能是因为以下原因: 1. 系统负载过高:如果服务器的负载过高,例如同运行了大量的应用程序或进程,可能会导致 CPU 占用率升高。此建议优化服务器配置,增加 CPU、内存等硬件资源,或者优化应用程序或进程的运行方式,减少资源占用。 2. 病毒或恶意软件:如果服务器感染了病毒或恶意软件,可能会导致 CPU 占用率升高。此建议使用杀毒软件或安全工具对服务器进行全面的扫描和清理。 3. 宝塔面板插件异常:如果宝塔面板安装了一些插件或扩展,可能会导致系统出现异常,从而导致 CPU 占用率升高。此建议禁用或卸载异常插件,或者联系插件开发者进行修复。 4. 其他原因:还有一些其他原因可能导致 CPU 占用率升高,例如服务器配置不足、系统内核出现异常等。此建议进行系统诊断和优化,查找问题的根源并进行解决。 综上所述,宝塔面板登录 CPU 占用率升高可能是多种原因造成的,需要根据具体情况进行诊断和解决。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值