这是AWS Linux AMI + EBS上的标准apache Web服务器。 我们注意到高负荷平均值(+8)和iotop -a
节目:
Total DISK READ: 0.00 B/s | Total DISK WRITE: 2.37 M/s TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND 3730 be/4 root 0.00 B 0.00 B 0.00 % 91.98 % [kworker/u8:1] 774 be/3 root 0.00 B 1636.00 K 0.00 % 15.77 % [jbd2/xvda1-8] 3215 be/4 apache 0.00 B 40.39 M 0.00 % 0.88 % httpd 3270 be/4 apache 0.00 B 38.20 M 0.00 % 0.93 % httpd 2770 be/4 apache 0.00 B 46.86 M 0.00 % 0.71 % httpd
当apacheclosures时,kworker和jbd2也会closures。
服务器不交换,因为我们有足够的RAM可用。 我已经看到与数据库服务器有关的这个问题,但是没有任何东西只与Apache分离。
任何想法如何进一步诊断和预防呢?
更新1:perf报告(perflogging-g -a睡眠10)
Samples: 114K of event 'cpu-clock', Event count (approx.): 28728500000 - 83.58% swapper [kernel.kallsyms] [k] xen_hypercall_sched_op ◆ + xen_hypercall_sched_op ▒ + default_idle ▒ + arch_cpu_idle ▒ - cpu_startup_entry ▒ 70.16% cpu_bringup_and_idle ▒ - 29.84% rest_init ▒ start_kernel ▒ x86_64_start_reservations ▒ xen_start_kernel ▒ + 1.73% httpd [kernel.kallsyms] [k] __d_lookup_rcu ▒ + 1.08% httpd [kernel.kallsyms] [k] xen_hypercall_xen_version ▒ + 0.38% httpd [vdso] [.] 0x0000000000000d7c ▒ + 0.36% httpd libphp5.so [.] zend_hash_find ▒ + 0.33% httpd libphp5.so [.] _zend_hash_add_or_update ▒ + 0.25% httpd libc-2.17.so [.] __memcpy_ssse3 ▒ + 0.24% httpd libphp5.so [.] _zval_ptr_dtor ▒ + 0.24% httpd [kernel.kallsyms] [k] __audit_syscall_entry ▒ + 0.22% httpd [kernel.kallsyms] [k] pvclock_clocksource_read ▒
100%的IO并不意味着它正在使用所有的IO操作。 这意味着它什么都不做,只能等待IO。 因此,具有低/零磁盘带宽的高%IO可以是正常的。
man iotop
:
[…]它还显示线程/进程在交换和等待I / O时花费的时间百分比。
这可能是一个不同的问题,如果你的kworker
永远等待IO,但我不知道。 也许它应该等待在一个pipe道或其他东西。 有时我看到kworker
在我的服务器上kworker
这样做的,这似乎不成问题。 (我第一次看到它也惊慌失措。)