当出现问题时给我我的杀手锏

我们已经有几次了。 突然,我们的生产服务器将不会响应,因为进程处于无限循环,或者MySQL服务器停止服务新的请求,因为一个查询阻止了所有的事情。

我们SSH到服务器,并使用ps auxtopfind罪魁祸首,或mytopSHOW FULL PROCESSLIST在MySQL的SHOW FULL PROCESSLISTfind有问题的进程ID并kill它。 然后,我们尝试重新创buildtesting服务器上的情况并修复错误。

但有时服务器是如此之好,你的ps aux / top / mytop / SHOW FULL PROCESSLIST将不会通过 – 即使pipe理员被阻止。

什么是确保pipe理员能够始终访问服务器并杀死违规进程或查询(在Linux和MySQL上)的最佳方法?

  • 我们可以把优先权分配给不同的用户吗?
  • 为root保留一部分资源?

我已经检查好(1) ,但不断有好的-20开放连接似乎有点过分和难以工作(更不用说危险的根源)。

pam_limits.so模块是限制内存,打开文件,以及为用户和组设置好的优先级的一个漂亮的工具。

 rpm -ql pam | grep limits man limits.conf less /etc/security/limits.conf 

我们使用安装了远程访问网卡(DRAC)的戴尔服务器,该服务器允许我们通过ssh或Web浏览器带外访问服务器。 我们可以进入控制台屏幕,或重新启动服务器。 大多数主要的服务器厂商支持一些类似的设备

如果您想要login到一个有0个可用资源的服务器来login,这不会有帮助。 为保留login资源不足,这是物理访问服务器的下一个最好的事情。

这听起来像你有问题的应用程序周围的问题。 为什么你有进入无限循环的应用程序和MySQL查询耗尽你的服务器资源?

我想我的答案不够好,有人觉得有必要删除它。

monit或god,通过设定限制来抢占事物。 如果您运行的是虚拟化的铁而不是裸机,那么除了一个内核之外,将所有内核都分配给您的进程,并保存一个核心以用于控制台访 基于IP的KVM有时可以让您在控制台上input组合键。 如果networking活动正在这样做,closureseth0,直到事情冷静下来,连接eth1。

也许SLURM可能是答案。 这是基于Linux的集群系统的QoS资源pipe理器。