![服务器进程停滞几秒钟,我们如何找到问题所在?](https://linux22.com/image/607965/%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%BF%9B%E7%A8%8B%E5%81%9C%E6%BB%9E%E5%87%A0%E7%A7%92%E9%92%9F%EF%BC%8C%E6%88%91%E4%BB%AC%E5%A6%82%E4%BD%95%E6%89%BE%E5%88%B0%E9%97%AE%E9%A2%98%E6%89%80%E5%9C%A8%EF%BC%9F.png)
我们有一个相当大的 VPS 运行我们的自定义服务器代码(不是 Web 服务器而是游戏服务器),有时服务器似乎会停顿几秒钟,我们如何才能追踪导致这种情况的线程/进程?
性能监视器可以告诉我们什么是停顿,CPU、硬盘等,但它不能告诉我们在停顿时什么正在使用该硬件...
有任何想法吗?
谢谢
答案1
由于它是虚拟机,无法从虚拟机管理程序进行测量,因此情况变得复杂。您无法从虚拟机内部真正获得物理机层面上正在发生的事情的良好测量结果。
这也取决于你所说的“进程停滞”到底是什么意思。但至少你可以研究一下以下几点来开始行动。
获取 Process Explorer,它就像是强化版的任务管理器。运行它,观察在其中一个事件期间硬件中断和 DPC 消耗了多少 CPU。如果消耗量非常高(不应超过 5%),则可能是驱动程序问题。然后,您可以检查系统进程,并查看系统进程中每个线程的 CPU 使用率。它通常会包含一个 *.sys 文件的名称,而这正是导致问题的驱动程序。
我要介绍的第二个工具是 Xperf。Xperf 是一款功能极其强大且灵活的系统分析工具。如果您正确使用,它会告诉您服务器性能问题的原因。