在linux服务器上调试I/O问题的一些方法是什么?
我一直在用:
# nohup top -b -d 10 > /var/log/top.log &
# nohup iotop -b -d 5 -o -t > /var/log/iotop.log &PS:硬件是干净的,新的和精细的。
交换空间根本没有被使用,我看到了很多:
[jbd2/sda6-8]
[jbd2/sda2-8]
[loop0]
[loop1]
[events/0]
[flush-8:0]
[kondemand/3]
[ksoftirqd/3]
[kblockd/2]服务器大部分时间都是安全的,然后随机上升到6.00~38.00负载平均值。
我在盒子上只有PHP/Apache/nginx。
示例:
top - 03:25:11 up 1 day, 5:00, 3 users, load average: 6.87, 2.98, 1.90
Tasks: 224 total, 1 running, 222 sleeping, 0 stopped, 1 zombie
Cpu0 : 4.7%us, 1.0%sy, 0.0%ni, 21.3%id, 73.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu1 : 15.0%us, 2.3%sy, 0.0%ni, 60.0%id, 22.7%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu2 : 6.7%us, 1.7%sy, 0.0%ni, 0.0%id, 91.3%wa, 0.0%hi, 0.3%si, 0.0%st
Cpu3 : 0.0%us, 0.0%sy, 0.0%ni, 91.1%id, 8.6%wa, 0.0%hi, 0.3%si, 0.0%st
Mem: 8031932k total, 7971176k used, 60756k free, 231236k buffers
Swap: 8191992k total, 0k used, 8191992k free, 6334420k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2231 mysql 20 0 2576m 537m 6348 S 3.0 6.9 66:35.85 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --us
678511 user 20 0 245m 43m 20m D 1.0 0.6 0:01.08 /usr/bin/php
678539 user 20 0 255m 49m 21m D 0.7 0.6 0:00.33 /usr/bin/php
678551 user 20 0 230m 14m 8392 D 0.7 0.2 0:00.08 /usr/bin/php
678565 user 20 0 231m 17m 10m D 0.7 0.2 0:00.08 /usr/bin/php
36 root 20 0 0 0 0 S 0.3 0.0 1:04.45 [kblockd/2]
60 root 20 0 0 0 0 S 0.3 0.0 0:51.02 [kswapd0]
1653 root 20 0 0 0 0 S 0.3 0.0 0:54.87 [kondemand/2]
3394 root 20 0 353m 3480 1496 S 0.3 0.0 7:26.66 /usr/sbin/db_governor
494915 nobody 18 -2 61104 19m 988 S 0.3 0.2 0:38.74 nginx: worker process
678473 nobody 20 0 96912 13m 2304 S 0.3 0.2 0:00.04 /usr/local/apache/bin/httpd -k start -DSSL
678474 nobody 20 0 96904 13m 2304 S 0.3 0.2 0:00.04 /usr/local/apache/bin/httpd -k start -DSSL
678480 user 20 0 229m 17m 10m S 0.3 0.2 0:00.22 /usr/bin/php
678491 root 20 0 15148 1360 944 R 0.3 0.0 0:00.15 top -c
678519 user 20 0 233m 30m 20m D 0.3 0.4 0:00.22 /usr/bin/php
678538 user 20 0 234m 31m 20m D 0.3 0.4 0:00.18 /usr/bin/php
678567 user 20 0 230m 14m 8392 D 0.3 0.2 0:00.06 /usr/bin/php
678612 user 20 0 128m 6156 4392 D 0.3 0.1 0:00.01 /usr/bin/php
1 root 20 0 19356 1388 1064 S 0.0 0.0 0:00.89 /sbin/init和它的顶部
66913 be/4 user 1733.28 K/s 0.00 B/s 0.00 % 99.99 % php
66888 be/4 user 734.51 K/s 0.00 B/s 0.00 % 99.99 % php
66275 be/4 user 167.11 K/s 0.00 B/s 0.00 % 99.99 % php
66409 be/4 user 956.03 K/s 0.00 B/s 0.00 % 99.99 % php
66840 be/4 user 15.55 K/s 0.00 B/s 0.00 % 99.99 % php
66825 be/4 user 85.50 K/s 0.00 B/s 0.00 % 99.99 % php
66902 be/4 user 2028.64 K/s 0.00 B/s 0.00 % 99.99 % php
66268 be/4 user 932.71 K/s 0.00 B/s 0.00 % 99.95 % php
66805 be/4 user 489.67 K/s 0.00 B/s 0.00 % 93.08 % php这就是随机的尖峰。
想法?
发布于 2012-11-06 12:10:21
谢谢你的提问。
了解您正在使用的硬件的详细信息将是有帮助的。
这包括服务器制造/模型、磁盘阵列设置(RAID控制器、RAID级别、缓存解决方案、磁盘#)以及Linux发行版和内核的详细信息。
查看上面的数据转储,我怀疑I/O等待从饥饿的写活动或等待资源。当磁盘阵列上没有可用的写缓存时,就会发生这种情况。这也可能是负荷剧烈波动的原因。
像碘化钾或收藏品这样的工具的输出将更有助于理解正在发生的事情。
尝试iostat -x 1或collectl -sD并发布结果。
https://serverfault.com/questions/445802
复制相似问题