kworker споживає + 90% вводу-виводу та нульового запису на диск


22

це стандартний веб-сервер apache на 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 також знижуються.

Сервер не обміняється, оскільки у нас є багато оперативної пам’яті. Я бачив цю проблему, пов’язану із серверами баз даних, але Apache нічого не стосується.

Будь-яка ідея, як далі діагностувати це та запобігти?

ОНОВЛЕННЯ 1: звіт про парф (запис perf -g-сон 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 робить як крок усунення несправностей.
Девід Шварц

Поведінка kworker технічно цікава, але мені цікаво, чому потоки Apache записують мегабайти на диск. Якщо припустити, що пояснює 2 Мб / с, чи не так це високо для веб-сервера? Тоді можна було б ідентифікувати записані файли, наприклад strace -p(а може бути, lsof) і подивитися, чи це показує щось цікаве.
sourcejedi

1
Чи це обмінятися випадково?
Grizly

1
Спробуйте ввімкнути sendfileApache, щоб скористатися нульовою копією.
fgbreel

1
@ user2383712 Ця проблема, можливо, пов’язана з вашим хмарним "сусідом", чи можете ви зв’язатись з Aws щодо цієї проблеми, якщо не спробувати відключити aws екземпляр, щоб змінити його гіпервізор, у мене була ця проблема в минулому.
Алін Андрій

Відповіді:


5

100% IO не означає, що він використовує всі ваші операції з IO. Це означає, що він нічого не робить, крім чекання на IO. Тому високий% IO з низькою / нульовою пропускною здатністю диска може бути нормальним.

man iotop:

[...] Він також відображає відсоток часу, який нитка / процес витратили під час заміни та очікування на введення / виведення.

Це може бути інше питання, якщо ваш kworkerчекає на IO вічно, але я не знаю. Можливо, це повинно чекати на трубі чи щось таке. Я бачу, що kworkerробимо те саме на моєму сервері, і це, здається, не є проблемою. (Я також панікував у перший раз, коли побачив це.)


1
Це також у спільному середовищі, де всі вони отримують доступ до одних і тих же масивів зберігання. Це знак зайнятого диска (про який VM може нічого не знати, оскільки він ефективно ізольований). На спеціальному обладнанні швидше буде несправний диск з великою кількістю спроб. Якщо встановити доступ до мережі, це може означати поганий зв’язок, а також перевантаженість NAS / стороною.
Спулер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.