我在 OpenVZ VPS 帐户上有一台 Ubuntu x64 机器,它配有四核处理器,内存为 1GB/2GB(突发)。几天前,我成功地将它更新到 11.10 Oneiric Ocelot。只有一个问题:我的“init”进程(PID = 1)的 CPU 使用率为 100%,一个核心 99.5% 的时间都处于全速状态。
有什么解决方案可以阻止奇怪的 init 行为吗?我可以追踪该 init 进程背后发生的事情,找出导致其峰值如此之高的原因吗?
答案1
从Bellum PLC 论坛 - Ubuntu 11.10 初始化 100% CPU 使用率错误:
我注意到由于 upstart 导致的 init CPU 使用率问题,它不断消耗 99% 的内存。我决定找到一个可行的解决方案。这是一个已由 Ubuntu 确认的错误,但下面是一个简单的快速修复补丁,应该可以完全适用于所有人。
首先打开 SSH 并添加以下 PPA,
add-apt-repository ppa:jammy/upstart.fix-880049
按 Enter 键,然后再次按 Enter。如果提示未找到命令,则先发出此命令
apt-get install python-software-properties
然后
apt-get update && apt-get upgrade
答案2
不幸的是,由于 upstart 大量使用 ptrace() 来实现它的“expect fork”功能,所以大多数时候用 gdb 来 strace 或附加它真的很困难,甚至是不可能的。
但是,您可以打开详细日志记录。
initctl log-priority info
如果你想要更多东西
initctl log-priority debug
这至少可以提供一些线索,说明它是如何耗尽所有这些 CPU 周期的。
答案3
问题是 init 需要访问 /dev/console,但 OpenVZ 虚拟机中并不存在该权限。
如果您有权访问物理机器,则可以通过授予对物理设备的访问权限来创建 /dev/console 设备:
vzctl set 105 --devices c:5:1:rw --save
将 105 替换为您的虚拟服务器的编号。我遇到了同样的问题,这解决了问题,而不必编译修补的 init。
答案4
James Hewitt 发布了 upstart 修复程序 (2011-11-24)
https://code.launchpad.net/~jammy/+archive/upstart.fix-880049
#add-apt-repository ppa:jammy/upstart.fix-880049
#apt-get update
#apt-get upgrade
#reboot
重启后初始化 0.0%