Linux中Python程序CPU占用高排查

Linux中Python程序CPU占用高排查

Linux中Python程序CPU占用高排查,Linux中Python程序CPU占用高排查,Linux中Python程序CPU占用高排查

kafka-python==2.0.2和 gevent 新版本 生产机器中发现CPU占用极高,应该是有bug:https://github.com/dpkp/kafka-python/issues/2168 。目前推测是gevent patch后Kafka Consumer 和 heartbeat 占用了大量的 CPU 。

机器环境

  • Debian 10
  • Python 3.7.3
  • kafka-python 2.0.2
  • gevent 21.12.0 (greenlet 1.1.2)

测试代码

top查看cpu占用

ps查看程序

进程的线程CPU占用情况

跟踪进程的执行堆栈

跟踪结果如下,gevent长时间再做epoll_wait,epoll_poll操作?

跟踪函数的调用

执行结果

调试结果

I test my code again , high cpu, environment:gevent == 20.9.0 and kafka-python == 1.4.7

I test my code again , normal cpu, environment:gevent == 1.5.0 and kafka-python == 2.0.2

But in github issues another test gevent==20.9.0 and kafka-python == 1.4.7 is normal.

monkey后,gevent在做大量的epoll wait操作。 直接导致了死循环。处理方案:gevent降级为gevent==1.5.0 (greenlet==0.4.15)后,一切正常。

发表评论

您的电子邮箱地址不会被公开。