我们的一台服务器持续发出 CPU 过高警报。调查后发现,该问题始终是由 klogd 进程引起的:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
10921 root 20 0 521368 38016 804 S 375.1 0.2 630:10.11 klogd
我看过其他帖子,例如klogd 使用高 CPU,但我还是无法弄清楚这件事。
strace -p 10921 显示:
futex(0x7f24f99619d0, FUTEX_WAIT, 10922, NULL
strace -p 10922 显示:
futex(0x1c27d44, FUTEX_WAIT_PRIVATE, 203, NULL
strace -p 203 显示:
strace: attach: ptrace(PTRACE_ATTACH, ...): No such process
查看/proc/10921/fd:
lrwx------ 1 root root 64 Jan 9 13:43 5 -> socket:[315987]
lrwx------ 1 root root 64 Jan 9 13:43 4 -> socket:[315944]
lrwx------ 1 root root 64 Jan 9 13:43 3 -> socket:[13077]
l-wx------ 1 root root 64 Jan 9 13:43 2 -> /dev/null
l-wx------ 1 root root 64 Jan 9 13:43 1 -> /dev/null
lr-x------ 1 root root 64 Jan 9 13:43 0 -> /dev/null
'ss | grep {any socket above}' 没有显示任何结果......
到目前为止,为了解决这个问题,我通常只是终止 klogd 进程。有时,使用相同的 klogd 命令几个小时后,CPU 会再次开始激增,有时会在几天后(顺便提一下,我们的服务器每晚都会重新启动 - 长话短说...)
感谢任何帮助 - 我不是 Linux 系统管理员,因此感谢任何我可能忽略的基本提示!