如何找出哪个进程占用了 Linux 服务器?

如何找出哪个进程占用了 Linux 服务器?

我们有一台 RHEL 服务器。今天它突然变慢了。症状 - 它对来自其他服务器的 ping 查询的响应很慢。当我尝试使用 ssh 登录时,登录大约需要 10 秒钟。我通过一些猜测解决了这个问题。我杀死了一个我认为是罪魁祸首的进程。这解决了问题。不过我想知道在这种“服务器速度慢”的情况下检测罪魁祸首的正确方法是什么。让我知道解决这种缓慢问题和检测导致缓慢的进程的正确方法。

服务器速度慢的情况如下:

# vmstat 3 3
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  1    176 6730868 285052 4899676    0    0     3     4    0    0  1  1 97  1  0
 0  0    176 6751576 285064 4899704    0    0     0   115 15307 37171  1  1 96  3  0
 0  0    176 6751948 285068 4899700    0    0     0    23 14813 39559  1  1 98  1  0

# top

top - 16:38:18 up 150 days, 19:36, 64 users,  load average: 1.68, 1.46, 1.44
Tasks: 1287 total,   2 running, 1284 sleeping,   1 stopped,   0 zombie
Cpu(s):  1.3%us,  1.7%sy,  0.1%ni, 95.9%id,  0.7%wa,  0.0%hi,  0.2%si,  0.0%st
Mem:  16620824k total,  9867124k used,  6753700k free,   287424k buffers
Swap:  8193140k total,      176k used,  8192964k free,  4898996k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
26258 khk       34  19  130m  47m 7088 S 11.2  0.3 385:32.42 edm

不过,我想知道在这种“服务器速度慢”的情况下,检测罪魁祸首的正确方法是什么。让我知道解决此类缓慢问题和检测导致缓慢的过程的正确方法。

注意 - 由于 ping 响应很慢,我们首先怀疑是网络问题。但事实并非如此。我们通过切换与相邻服务器(也在同一子网中)的网线来确认问题。

相关内容