Ubuntu 12.04 LTS (GNU/Linux 3.2.0-25-virtual i686)
我有一个在主机上作为 KVM-VM 运行的实例,该主机旁边还运行着另一个 VM。
我使用 Capistrano deploy-gem 部署了一个 Ruby on Rails 应用程序。
但是,如果我在短时间内连续部署两次,由于该/sbin/getty
过程,CPU 使用率就会跃升至 100%。
怎么会这样?
我相信 getty 是一个相当简单的程序,它将登录名从终端传递到登录进程。
另外:在我的 Capfile(Capistrano 配置文件)中,我在部署 Rails 应用程序后运行某些命令,包括对sudo /sbin/restart <APPNAME>
upstart 任务的调用。
这可能有什么关联吗?
我总是可以终止 getty 进程,这样问题就消失了,直到下一次部署,但我宁愿了解并解决问题。
任何帮助都非常感谢。附件是我的问题的屏幕截图。
答案1
最后我在Ubuntu 12.10 Server
VPS 上也遇到了这个问题。
但因为我不需要任何东西tty
(因为我正在连接ssh
)我修复了它艰辛的道路:
sudo rm /etc/init/tty*
sudo reboot
而且它运行得很好!不再有getty
进程卡住。
答案2
您正在登录吗syslog
?
你syslog
要去嗎tty1
?
如果是这样,那么很有可能您拥有的价值超过 38400bpssyslog
并且getty
在等待将数据转储到其时处于阻塞状态tty
。
我会检查你的rsyslog
配置 - 默认情况下,Ubuntu 会将一些syslog
输出记录到/dev/xconsole via /etc/rsyslogd.d/50-default.conf
。
答案3
在我的 Ubuntu 16.04 机器上,我的一个核心进程的 CPU 利用率达到 100% agetty
。在我的特定情况下,我仅使用 ssh 连接访问服务器,因此经过一段时间的调查后,我决定将其删除。
sudo rm /etc/systemd/system/getty.target.wants/[email protected]
sudo rm /lib/systemd/system/[email protected]
需要重新启动。解决方案位于https://peteris.rocks/blog/can-you-kill-it/在采取这样的选择之前,请仔细检查您是否确实不需要 tty。