이것은 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 ▒
3
perf 를 사용하여 kworker가 문제점 해결 단계로 수행중인 작업을 찾으십시오 .
—
David Schwartz
kworker의 동작은 기술적으로 흥미롭지 만 Apache 스레드가 디스크에 메가 바이트를 쓰는 이유가 궁금합니다. 2MB / s를 설명한다고 가정하면 웹 서버에 비해 높지 않습니까? 그런 다음 작성중인 파일을 식별하고
—
sourcejedi
strace -p
( 예 : lsof) 흥미로운 것이 있는지 확인할 수 있습니다.
우연히 스왑입니까?
—
Grizly
sendfile
아파치에서 사본 을 사용하지 않도록 설정하십시오 .
@ user2383712이 문제는 클라우드 "이웃"과 관련이있을 수 있습니다.이 문제에 대해 AWS에 문의 할 수 있습니까?
—
Alin Andrei