+ 90 % IO 및 제로 디스크 쓰기를 소비하는 kworker


22

이것은 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                                        ▒


kworker의 동작은 기술적으로 흥미롭지 만 Apache 스레드가 디스크에 메가 바이트를 쓰는 이유가 궁금합니다. 2MB / s를 설명한다고 가정하면 웹 서버에 비해 높지 않습니까? 그런 다음 작성중인 파일을 식별하고 strace -p( 예 : lsof) 흥미로운 것이 있는지 확인할 수 있습니다.
sourcejedi

1
우연히 스왑입니까?
Grizly

1
sendfile아파치에서 사본 을 사용하지 않도록 설정하십시오 .
fgbreel

1
@ user2383712이 문제는 클라우드 "이웃"과 관련이있을 수 있습니다.이 문제에 대해 AWS에 문의 할 수 있습니까?
Alin Andrei

답변:


5

100 % IO가 모든 IO 작업을 사용하고있는 것은 아닙니다. 그것은 IO를 기다리는 것 외에는 아무것도하지 않는다는 것을 의미합니다. 따라서 디스크 대역폭이 낮거나 0 인 높은 % IO가 정상일 수 있습니다.

man iotop:

[...] 또한 스레드 / 프로세스가 스왑 인 및 I / O를 기다리는 동안 소비 한 시간의 백분율을 표시합니다.

kworkerIO를 영원히 기다리는 경우 다른 문제가 될 수 있지만 모르겠습니다. 아마도 파이프 나 무언가를 기다리고있을 수도 있습니다. 내가 볼 kworker가끔 내 서버에 같은 일을하고, 문제가 될 것 같지 않습니다. (저도 처음봤을 때 당황했습니다.)


1
또한 공유 환경에서 모두 동일한 스토리지 배열에 액세스합니다. 이것은 사용중인 디스크의 표시입니다 (이것은 VM이 효과적으로 격리되어 있기 때문에 VM이 알지 못할 수도 있음). 전용 하드웨어에서는 재 시도가 많은 디스크가 고장날 가능성이 높습니다. 네트워크 탑재 액세스에서 NAS / 대상 측 정체뿐만 아니라 잘못된 링크를 의미 할 수 있습니다.
스풀러
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.