我在Amazon EC2微型实例上运行一些基于Ubuntu 11.04的裸机服务器,其目的仅仅是协调一些networking服务器的活动。 这台机器运行了好几个星期,但现在经常挂着100%的CPU红线。
我通过SSHlogin到了机器上,运行了一个top
,它显示了landscape-sysinfo
进程是执行者占用了所有的系统资源。 一个pstree
透露它在哪里:
init─┬─atd ├─cron ├─dhclient3 ├─dovecot─┬─2* [达夫科特-AUTH] │├─3* [imap-login] │└─3* [pop3-login] ├─6* [格蒂] ├─master─┬─pickup │└─qmgr ├─mountall ├─mysqld───11* [{的mysqld}] ├─rsyslogd───3* [{rsyslogd}] ├─sshd─┬─sshd───sshd───bash │├─sshd───────────────────────────────── │├─sshd────────────────────────────── │└─sshd───sh───run-parts───────────────────────────────────────────────────────────────────────────</s>─ ├─udevd───2* [的udevd] ├─upstart-孔型 ├─upstart-的udev-BR └─vsftpd
违规程序在这里被列为sshd
的最后一个孩子。 如果我手动杀死了landscape-sysinfo
,机器恢复正常 – 直到进程自发地重新生成,通常在一会儿之后。 (我可以“保证”上述树中的其他sshd
进程,它们是合法的。)
我不知道为什么landscape-sysinfo
是随机产生的。 我不知道为什么这是sshd
的孩子。
对于在我的机器上运行的SSH进程,我无能为力。 最初我担心chkrootkit
/木马/后门,所以我运行chkrootkit
和rkhunter
,但他们都干净。
有谁知道什么可能导致这个过程疯狂? 任何关于如何阻止重生的想法?
我早就知道这个问题的实际原因,并且认为我应该把这个文件logging下来,以供其他可能有类似问题的人使用。 根本原因比我最初的预料更加棘手和复杂。
总之, run-parts
一直工作得很好。 它的干扰只是一个不同的问题的症状。 失败链看起来像这样:
1) 在完全不同的机器上 , lsyncd
(基于rsync
的文件同步实用程序)出于无法理解的原因而无法运行。 然而,我们担心的是, lsyncd
试图通过SSH同步这个微型实例(显示问题)的文件。
2)因为lsyncd
通过SSH进行了数十个同时连接,所以每个连接似乎都被默认情况下Ubuntu提供的SSHlogin横幅迎面而来。 因此,似乎run-parts
是罪魁祸首,实际上问题是机器被SSH连接轰炸。
3)问题更加严重的是,这是EC2上的一个微观实例, 我发现亚马逊严重扼杀了CPU消耗稳步超过一定门槛的微型实例。 (对于细节的一个很好的解释,请看格雷格的Ramblings 。非常感谢格雷格那篇文章!)
因此,机器在被SSH连接轰炸的时候缓慢地运行了一会儿,然后在节stream开始后变得不能用了。
谜团已揭开!
这是一个定期计划的cron工作,收集性能数据。
在这里寻找(清除)指示。 如果您不关心数据收集,只需将其完全删除即可删除软件包(如果它允许的话)或只是find它的crontab项并注释掉。