背景:我们正在运行一组 Ubuntu 服务器,这些服务器的性能会逐渐下降,直到完全不适用。这些服务器上运行的只是在 Java8 上运行的 Java Springboot 服务,每台服务器上都有多个这样的服务。这些服务器在 EXSI 上运行,前面有一个 HaProxy 平衡器,以循环方式分担负载。
问题:随着时间的推移,系统 CPU 使用率不断上升,直到我们将所有核心最大化,并使负载达到服务器应处理的负载的 10 倍左右。
观察到的行为:CPU 使用率通常与一个或两个服务 PID 相关。停止服务会导致另一个服务的 PID 占用大量 CPU。停止机器上的所有服务会使我们的 CPU 使用率接近于零。重新启动服务会导致 CPU 使用率再次飙升。在此期间,等待时间连接数较低,通常在 30-40 左右。打开的文件数较少,远低于设定的限制。重新启动虚拟机会导致问题暂时解决。
Ubuntu 版本:Ubuntu 20.04.4 LTS 内核:5.4.0-128-generic EXSI:7.0.3
我希望这些信息足以让人们提出建议,告诉他们应该关注什么以及可能存在什么问题。
感谢您。
答案1
我建议您从受影响的服务器获取日志,然后将日志提供给 ubuntu 的支持并让他们进行调查,他们最有可能就您的问题的下一步处理方式提供反馈。