首先通过top命令发现pworker进程的CPU占用率接近100%,如下:
# top
Run Time: 0 days, 0 hours and 59 minutes
24U, 25S, 49I; mem: T:64040 F:61472 A:61159 C:120 SC:0 ST:0 SF:0
pworker 399 R 99.9 0.0
#
之后,通过strace命令查看一下其在执行什么系统操作:
/ # ./strace -p 399
./strace: Process 399 attached
epoll_wait(-1, 0x4714f00, 0, 5000) = -1 EINVAL (Invalid argument)
alarm(30) = 0
alarm(0) = 30
epoll_wait(-1, 0x4714f00, 0, 5000) = -1 EINVAL (Invalid argument)
alarm(30) = 0
alarm(0) = 30
epoll_wait(-1, 0x4714f00, 0, 5000) = -1 EINVAL (Invalid argument)
alarm(30) = 0
alarm(0) = 30
epoll_wait(-1, 0x4714f00, 0, 5000) = -1 EINVAL (Invalid argument)
alarm(30) = 0
可见,epoll_wait的参数错误引起了死循环。