前段时间我遇到了一个服务器的问题,其中Apache和Snort占用了100%的处理器,从而使sshd无法通过远程访问进行响应。我必须亲自去服务器上登录本地TTY,然后停止apache / snort。
我想知道是否有一种方法可以在CPU /内存负载为100%的情况下保证ssh连接。设置一个“不错”的优先级就足够了吗?
谢谢!
前段时间我遇到了一个服务器的问题,其中Apache和Snort占用了100%的处理器,从而使sshd无法通过远程访问进行响应。我必须亲自去服务器上登录本地TTY,然后停止apache / snort。
我想知道是否有一种方法可以在CPU /内存负载为100%的情况下保证ssh连接。设置一个“不错”的优先级就足够了吗?
谢谢!
Answers:
除了使用带外方法之外,没有其他方法可以保证在满载的服务器上可以使用SSH。如果您的服务负载太大,甚至无法为您提供基本的SSH终端,那么您还有其他问题。
是的,renice
给它一个较低的nice
值可以提高重负载下的性能,但改用pam_security之类的东西(此处显示的示例)可以防止Apache /任何东西开始变得难以管理。
nice
'd罪魁祸首'也将以足够快的速度从CPU上启动,以确保您具有SSH访问权限(或就此而言)您拥有的任何控制台访问权限都可以使用)。在潜在的问题需要加以解决(资源-HOG)。消防系统管理不善。
您的通用解决方案是带外管理工具,例如Dell iDRAC,IBM Remote Supervisor或HP iLO。它总是可以显示一个控制台(操作系统是否可以响应它取决于您的具体情况),并根据需要应用所需的电源状态。
我已经给sshd授予了实时特权,但是取得了一些成功,但是如果其中一个实时进程运行不当,这将不得不重新启动计算机。
因此,如果您想走这条路,请启动仅用于紧急情况的第二个ssh守护程序。:)
realtime
sshd对我来说似乎很危险,特别是在端口22上(SSH扫描可能会成为DoS攻击-在备用端口上运行可以缓解这种情况,但我仍然会感到恐惧...)