loop0 命令占用了 100% 的 CPU

loop0 命令占用了 100% 的 CPU

今天我注意到我的服务器变得非常慢。我通过 top 命令检查,结果如下:

top - 21:49:32 up 25 days,  9:13,  1 user,  load average: 1238.23, 825.34, 502.3
Tasks: 1815 total, 145 running, 1666 sleeping,   0 stopped,   4 zombie
Cpu(s):  1.3%us, 98.0%sy,  0.0%ni,  0.0%id,  0.4%wa,  0.0%hi,  0.4%si,  0.0%st
Mem:  12290984k total, 12252988k used,    37996k free,    30756k buffers
Swap:  1052248k total,   428116k used,   624132k free,   981528k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND            
 3129 root       5 -20     0    0    0 R 77.8  0.0  34:10.25 loop0              
 2281 nobody    18   0  163m  11m 3128 R 55.6  0.1   0:02.93 httpd              
 2021 nobody    19   0  162m  11m 3552 R 44.9  0.1   0:03.07 httpd              
  561 nobody    18   0  163m  11m 3172 R 44.4  0.1   0:02.03 httpd              
 2085 nobody    17   0  163m  11m 3176 R 41.4  0.1   0:03.22 httpd              
 1116 nobody    18   0  162m  11m 3168 R 37.2  0.1   0:02.38 httpd              
31809 nobody    18   0  163m  12m 3500 R 36.2  0.1   0:02.10 httpd              
 1906 nobody    17   0  161m 9364 1936 R 35.7  0.1   0:13.15 httpd              
31979 nobody    17   0  162m  11m 3404 R 30.7  0.1   0:04.41 httpd              
32610 nobody    18   0  161m 9688 2344 R 29.9  0.1   0:11.07 httpd              
 2326 nobody    17   0  162m  11m 3428 R 28.7  0.1   0:02.18 httpd              
  565 root      20  -5     0    0    0 R 27.4  0.0   4:29.02 kswapd0            
 2183 nobody    19   0  162m  11m 3100 R 26.4  0.1   0:02.55 httpd              
 1998 nobody    17   0  162m  10m 2484 R 24.7  0.1   0:10.76 httpd              
28515 nobody    16   0  169m  16m 5416 R 23.4  0.1   0:02.75 httpd              
 2056 nobody    19   0  166m  14m 5776 R 22.2  0.1   0:02.95 httpd              
32379 nobody    16   0  164m  12m 4376 R 20.7  0.1   0:01.52 httpd 

我想知道哪里出了问题。我认为这与 /tmp 目录有关

root@server [~]# mount
/dev/sda2 on / type ext3 (rw,usrquota)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/usr/tmpDSK on /tmp type ext3 (rw,noexec,nosuid,loop=/dev/loop0)
/tmp on /var/tmp type none (rw,noexec,nosuid,bind)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)


root@server [~]# losetup -a
/dev/loop0: [0802]:103095300 (/usr/tmpDSK)

答案1

输出中的这一行mount是相关的:

/usr/tmpDSK on /tmp type ext3 (rw,noexec,nosuid,loop=/dev/loop0)

这表明您的/tmp文件系统正在使用回送挂载,这就是进程loop0出现的原因。这是一种不寻常的配置,可能不是理想的配置。这确实意味着如果数据尚未在缓存中,则所有访问/tmp都必须由进程处理。loop0

顶部的输出显示平均负载过高,为 1238.23,但您(仅)有 145 个进程处于运行状态。如果这两个数字稳定,则表明您有超过 1000 个进程被阻塞以等待 I/O。loop0仅从显示的输出无法确定这些阻塞进程中有多少正在等待执行某些工作。

考虑到已使用内存量很大,而空闲内存、缓冲区和缓存内存量却很少,我断定该系统内存压力很大。令人惊讶的是,它还没有用完所有的交换空间。

我会为该服务器添加更多 RAM。并且我会停止使用 的环回/tmp。如果由于/磁盘空间不足而设置了环回设备并且/usr有空间可以共享,那么有更好的方法来使用 中的部分空间/usr/tmp您可以创建一个/usr/local/tmp目录并将其绑定挂载到/tmp。绑定挂载没有需要环回设备的开销。

答案2

您运行的任务数量过多,这不仅仅是环回设备问题。您需要简化设置,以满足您所需的负载。您在 25 天内就有 4 个僵尸进程……这不健康。

相关内容