이것은 AWS Linux AMI + EBS의 표준 아파치 웹 서버입니다. 우리는 높은 평균 부하 (+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
아파치가 다운되면 kworker 및 jbd2도 다운됩니다.
사용 가능한 RAM이 많으므로 서버가 스와핑되지 않습니다. 이 문제는 데이터베이스 서버와 관련이 있지만 Apache에만 국한된 것은 없습니다.
이것을 더 진단하고 예방하는 방법에 대한 아이디어가 있습니까?
업데이트 1 : 성능 보고서 (perf record -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 ▒
답변
100 % IO가 모든 IO 작업을 사용하고있는 것은 아닙니다. 그것은 IO를 기다리는 것 외에는 아무것도하지 않는다는 것을 의미합니다. 따라서 디스크 대역폭이 낮거나 0 인 높은 % IO가 정상일 수 있습니다.
man iotop
:
[…] 또한 스레드 / 프로세스가 스왑 인 및 I / O를 기다리는 동안 소비 한 시간의 백분율을 표시합니다.
kworker
IO를 영원히 기다리는 경우 다른 문제가 될 수 있지만 모르겠습니다. 아마도 파이프 나 무언가를 기다리고있을 수도 있습니다. 내가 볼 kworker
가끔 내 서버에 같은 일을하고, 문제가 될 것 같지 않습니다. (저도 처음봤을 때 당황했습니다.)