brpc
brpc copied to clipboard
EventDispatcher Run调用epoll_wait导致cpu持续高
Describe the bug (描述bug) 我有一个主服务,会启动一个bthread线程执行某些脚本,过程中会有一些fork行为。此外会启动另一个bthread线程,来获取脚本进程的系统资源使用(cpu、rss等)。当触发某些条件时,会杀掉脚本进程组,两个bthread线程会自行退出。
但是当bthread线程return后,主服务进程的cpu便会持续升高,gdb发现有一个LWP会call EventDispatcher,一个持续epoll_wait的行为会占满100%cpu,并且LWP的id会发生变化。
top -Hp信息
gdb信息:
perf top信息:
bthread前后信息: 运行时信息:
杀死脚本进程,两个bthread退出后信息:
To Reproduce (复现方法)
Expected behavior (期望行为) 导致cpu升高的原因是什么,如何避免?
Versions (各种版本) OS: linux 4.19 Compiler: gcc-4.9.2 brpc: 0.9.7 protobuf: 2.4.1
Additional context/screenshots (更多上下文/截图)
event dispatcher是跑在bthread中的,所以LWP id是可能会变化的。 可以perf一下那个线程看看么,画个火焰图贴上来