这是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
当apache关闭时,kworker和jbd2也关闭。
服务器没有交换,因为我们有大量可用的RAM。我已经看到了与数据库服务器有关的问题,但没有任何事情仅与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 ▒
3
您可能想使用perf来找出kworker在做什么,作为故障排除步骤。
—
David Schwartz
kworker的行为在技术上很有趣,但是我想知道为什么Apache线程向磁盘写入了兆字节。假设可以解释2MB / s的速度,那么对于Web服务器而言,这不是很高吗?然后,可以识别正在写入的文件,例如
—
sourcejedi 2015年
strace -p
(也许是lsof),看看是否显示任何有趣的东西。
是否有机会交换?
—
2015年
尝试启用
—
fgbreel
sendfile
apache以利用零拷贝。
@ user2383712这个问题可能与您的云“邻居”有关,您是否可以就此问题与AWS联系,如果不尝试关闭您的AWS实例以更改它的虚拟机管理程序,我过去曾遇到过此问题。
—
阿林·安德烈