如何在无法进入 shell 的情况下诊断 CPU 占用 100% 的进程?

如何在无法进入 shell 的情况下诊断 CPU 占用 100% 的进程?

假设在流行的 VPS 提供商上设置了 Ubuntu 14.04 服务器,该服务器使用 Nginx、Apache 和 WordPress/PHP 托管单个网站,启动服务器后,它会正常工作一段时间。几天后,VPS 提供商显示服务器的 CPU 使用率达到 100%,SSH 访问不再能连接(超时),网站变得无法访问。在服务器达到 100% CPU 使用率之前,可以通过 SSH 访问服务器而不会出现问题。服务器上几乎没有或根本没有会导致 CPU 使用率的负载 - 通常 CPU 使用率在 3% 以下。

如何在无法进入 shell 的情况下诊断哪个进程导致 CPU 使用率突然飙升?目前,当发生这种情况时,服务器会重新启动,然后运行几天。当然,虽然 ClamAV 没有发现任何潜在病毒,但怀疑是病​​毒或其他恶意软件。

答案1

更大的问题是首先要设置一种方法来找出机器发生了什么。在这些锁定期间,内存/网络是否出现峰值?您可以询问您的 VPS 提供商您的节点上是否有吵闹的邻居吗?您在访问日志中看到了什么 - 是 Google 扫描您并同时造成大量流量吗?如果您在一个盒子上运行所有东西,诊断起来会更困难,但答案应该在那里。

当您被锁定时,您确实有几个常规选择:

  1. VPS 提供商提供的 IPMI 接口。这通常由大多数小型提供商提供(即不是 Google/AWS)。它通常取决于底层基础设施,但通常是对机器 shell 的 OOB SSH 访问,或 Java Applet 提供的真正 iKVM 显示器。查看提供商仪表板中的机器详细信息。

  2. 您的机器上是否有任何工具,例如 NewRelic 或 FileBeat -> ELK?即使在锁定的情况下,它们通常仍会打电话回家。

相关内容