我在 ramnode.com 上的 VPS 上,使用 OpenVZ 进行虚拟化,安装的操作系统是 Ubuntu 12.10,但我运行do-release-upgrade
将其升级到 13.04。
rsyslogd
消耗了~150% 的 CPU,我对 Linux 确实不太了解,但是我按照某人的建议运行了strace -c -p `pidof rsyslogd`
它,结果如下:
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
100.00 37.912236 9478059 4 select
0.00 0.001000 500 2 write
0.00 0.000000 0 14 gettimeofday
0.00 0.000000 0 4 futex
------ ----------- ----------- --------- --------- ----------------
100.00 37.913236 24 total
因此看起来它把时间花在了那个选择系统调用上,但我不知道这意味着什么:(
运行strace -p `pidof rsyslogd`
只会给出一行,直到我中断它:
select(1, NULL, NULL, NULL, {22, 56702}^C <unfinished ...>
这可能是什么原因造成的?我该怎么做才能修复它?
编辑: tail /var/log/kern.log
给了我这个:
Jun 7 21:42:26 camilo kernel: last message repeated 14010362 times
Jun 7 21:43:26 camilo kernel: last message repeated 13755525 times
Jun 7 21:44:26 camilo kernel: last message repeated 13745228 times
Jun 7 22:03:44 camilo kernel: imklog 5.8.11, log source = /proc/kmsg started.
Jun 7 22:03:44 camilo kernel: Cannot read proc file system: 1 - Operation not permitted.
Jun 7 22:04:14 camilo kernel: last message repeated 6927277 times
Jun 7 22:05:14 camilo kernel: last message repeated 13931106 times
Jun 7 22:06:14 camilo kernel: last message repeated 13864233 times
Jun 7 22:09:46 camilo kernel: imklog 5.8.11, log source = /proc/kmsg started.
Jun 7 22:09:46 camilo kernel: Cannot read proc file system: 1 - Operation not permitted.
这听起来不太好 :( 内核是这样的2.6.32-042stab076.8
,我不认为我可以摆弄它。
答案1
这是一个例子https://bugs.launchpad.net/ubuntu/+source/rsyslog/+bug/523610。最近的发行版内核修复了该错误,但这对运行主机选择内核的虚拟机的用户没有帮助。抱歉,我没有修复方法。