use*_*712 25 linux io amazon-web-services apache-2.2
这是 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
Run Code Online (Sandbox Code Playgroud)
当 apache 宕机时,kworker 和 jbd2 也宕机了。
服务器没有交换,因为我们有足够的可用内存。我已经看到这个与数据库服务器相关的问题,但没有任何东西只与 Apache 相关。
关于如何进一步诊断并预防它的任何想法?
更新 1:性能报告(性能记录 -g -a sleep 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 ?
Run Code Online (Sandbox Code Playgroud)
100% IO 并不意味着它正在使用您所有的 IO 操作。这意味着它除了等待 IO 之外什么都不做。因此,具有低/零磁盘带宽的高 %IO 可能是正常的。
man iotop
:
[...] 它还显示线程/进程在换入和等待 I/O 时花费的时间百分比。
如果您kworker
永远等待 IO,这可能是一个不同的问题,但我不知道。也许它应该在等待管道或其他东西。我看到kworker
有时在我的服务器上做同样的事情,这似乎不是问题。(我第一次看到也惊慌了。)