我有一个在Amazon EC2上运行的CentOS 5实例。 正常的CPU使用率徘徊在10-20%左右。 然而,在过去的一周里,大约有四次CPU使用率突然上升到了100%,并且一直保持在100%,直到重新启动实例。
我确定这是一个错误,或者是服务器上的错误configuration,但是当实例进入这个状态时,我不能通过SSHlogin进行任何调查。 不幸的是,亚马逊并没有提供通过控制台访问实例的方法。
所以,我想我的问题是 – 有没有办法configuration机器,以便在任何100%的CPU情况下,我们优先考虑SSH以允许rootlogin和调查?
或者至less,有什么简单的方法来自动杀死任何进程/进程发生这种情况?
顺便说一句,这是一个“C1.xlarge”的实例在亚马逊,这意味着它有8个核心。
另外如果它有帮助,该机器被设置为运行Plesk的Web服务器。 不要告诉我,Plesk不能在EC2内部运行,因为我一直在做这个好几个月,直到最近。 机器已经运行了PLesk的monit版本,所以我宁愿不设置第二个monit。
您可以尝试修改sshd init脚本以启动一个好的值-5或-10。 这将改变所有SSHlogin的价值,这可能是适合你的。
在这种情况下,我知道没有办法以特殊的方式处理sshlogin,但是你应该检查你的cronjobs和日志文件。 特别是系统日志,它应该logging任何cronjob开始,看看这是否有关你的问题。 那么你应该能够找出你的问题的原因。 可能它甚至是一个内核bug,也可能被logging在系统日志中。
一个简单的事情就是logging所有进程的CPU使用情况。 像这样的东西:
top -l 0> top.log 2>&1 </ dev / null&
这将不断loggingtop的输出到top.log 。 redirect在那里,因为有时候我发现在SSH会话中启动的后台工作问题没有STDOUT,STDERR和STDIN都与某些东西有关。
无论如何,在下一次重新启动之后,您可以只读取该日志的底部,看看哪些进程正在锤击CPU。
以上将会产生相当多的输出。 你可以改为每5秒写出一次,如下所示:
top -l 0 -s 5> top.log 2>&1 </ dev / null&
感觉就像有一个叉形炸弹在某个耗尽PID空间的地方。 Linux为root保留了一些进程/内存的使用,但这需要
因为你无法login,所以我build议设置ulimits到内存的使用,打开文件的数量等等。