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.