我在 Amazon EC2 微型实例上运行了一个基本服务器(基于 Ubuntu 11.04),其目的只是协调一些网络服务器的活动。这台机器运行了几个星期,但现在经常挂起,CPU 占用率达到 100%。
我通过 SSH 登录到机器并运行top
,结果显示该landscape-sysinfo
进程是消耗所有系统资源的罪魁祸首。pstree
显示了它所在的位置:
init─┬─atd ─计划任务 ─dhclient3 ═─dovecot─┬─2*[dovecot-auth] │ ═ ... │ └─3*[pop3-登录] ─6*[盖蒂] │ ... │ └─qmgr ═─mountall ─mysqld───11*[{mysqld}] ═─rsyslogd───3*[{rsyslogd}] ═─sshd─┬─sshd───sshd───bash │ │ │ sshd───sshd───bash───top │ │ │ sshd───sshd───bash───pstree │ └─sshd───sh───run-parts───50-landscape-sy───landscape-sys+ ═─udevd───2*[udevd] ═─upstart-socket- ─upstart-udev-br └─vsftpd
有问题的进程在此处列为 的最后一个子进程sshd
。如果我手动终止landscape-sysinfo
,机器将恢复正常 - 直到该进程自发重生,通常是几分钟后。(我可以“保证”sshd
上面树中的其他进程。它们是合法的。)
我不知道为什么landscape-sysinfo
会随机生成。我更不知道为什么它是 的子代sshd
。
显然,我并不太高兴我的机器上运行着无法解释的 SSH 进程。起初我担心存在漏洞/木马/后门,所以我运行了chkrootkit
和rkhunter
,但结果都没有问题。
有人知道是什么原因导致此过程失控吗?有没有什么办法可以阻止它重生?
答案1
不久前,我找到了问题的真正原因,并认为我应该在这里记录下来,以便其他可能遇到类似问题的人可以参考。事实证明,问题的根本原因比我最初预想的更棘手、更复杂。
简而言之,run-parts
它一直运行良好。它出问题只是另一个问题的征兆。故障链如下所示:
1)在完全不同的机器上(lsyncd
基于 的文件同步实用程序rsync
)运行失常,原因超出了我们的关注范围。但我们担心的是,它lsyncd
试图通过 SSH 与这个微实例(出现问题的地方)同步文件。
2) 因为lsyncd
通过 SSH 同时建立了数十个连接,所以每个连接似乎都收到了landscape-sysinfo
Ubuntu 默认提供的 SSH 登录横幅。这解释了什么landscape-sysinfo
是 SSH 以及为什么它是 SSH 的子项。看起来这run-parts
是罪魁祸首,但实际上问题是机器受到了 SSH 连接的轰炸。
3)由于这是 EC2 上的一个微实例,问题更加严重,我后来发现,亚马逊严重限制了 CPU 消耗稳定超过某个阈值的微实例。(有关细节的详细说明,请参阅Greg 的闲聊。非常感谢 Greg 撰写的这篇文章!)
因此,当机器受到 SSH 连接的轰炸时,它会运行很慢,然后变得无法使用节流阀启动后速度变慢。
谜团已揭开!
答案2
它是一个定期安排的 cron 作业,用于收集性能数据。
看这里了解(简单)删除说明。如果您不关心数据收集,只需将其完全删除,即可删除该包(如果允许)或找到它的 crontab 条目并将其注释掉。