题 保证在压力较大的服务器上进行SSH访问


前段时间我遇到了一个问题,其中Apache和Snort占用了100%的处理器,使得sshd无法通过远程访问进行响应。我不得不去物理服务器登录本地TTY,然后停止apache / snort。

我想知道是否有一种方法可以保证在100%加载CPU /内存的情况下连接ssh。设置“好”的优先级就够了吗?

谢谢!


11
2017-09-03 17:25






答案:


除了使用带外方法之外,无法保证SSH在满载服务器上可用。如果您的服务如此负载甚至无法为您提供基本的SSH终端,那么您还有其他问题。

是, renice 给它一个更低的 nice value会改善重负载的性能,但是使用像pam_security这样的东西(示例显示) 这里)将阻止Apache /其他任何东西开始无法管理。


10
2017-09-03 17:59



对。他正在寻求治疗症状,而不是真正的问题。 - ewwhite
@ewwhite完全正确。治疗症状只会导致追逐你的尾巴试图找出原因 其他 事情就这样破裂了。 :) - Nathan C
我正在寻找一种消灭火灾的方法,但我当然会为其他守护进程设置限制。这是一个紧急情况,我需要安静地知道我将永远有sshd响应远程访问。 - Renato Todorov
@RenatoTodorov在这种情况下你无法治疗症状。如果您的系统有一个消耗所有{CPU,RAM,套接字,PID}的失控过程,您甚至无法保证 nice'罪魁祸首将以足够快的速度从CPU启动,以确保您具有SSH访问权限(或者您可以使用任何控制台访问权限)。该 根本问题 (资源匮乏)需要解决。消防系统管理不善。 - voretaq7
嗯,你们说服了我,只要我已经拥有它,我就会使用iDRAC 7 Express。谢谢你们! - Renato Todorov


您的通用解决方案是带外管理工具,如Dell iDRAC,IBM Remote Supervisor或HP iLO。它始终可以显示控制台(操作系统是否可以根据您的具体情况对其进行响应),并根据需要应用所需的电源状态。


7
2017-09-03 17:33



好的,iDRAC是一个很好的选择,因为我使用的是戴尔服务器,但我正在考虑一个更简单的解决方案,可能就像为sshd保留CPU(包括它的衍生儿童),本地服务的某种“QoS”。 - Renato Todorov
有些公司破产或贪婪:在这种情况下,sysrqd可以成为iDRAC,iLO,KVM的廉价替代品...... - bgtvfr


我已经取得了一些成功,为sshd提供了实时特权,但是如果其中一个实时进程失控则需要重启机器。

因此,如果您想沿着这条路线行驶,请启动第二个仅用于紧急情况的ssh守护程序。 :)


0
2017-09-03 19:43



realtimesshd对我来说似乎很危险,特别是在端口22上(SSH扫描可能会成为DoS攻击 - 在备用端口上运行可以缓解这种情况,但我还是会害怕......) - voretaq7
如果我阻止来自互联网的访问,这不是问题,实际上我到这个服务器的唯一途径是通过VPN。感谢您的建议! - Renato Todorov