Рейтинг:0

Как запросить ядро ​​​​linux, какие операции, связанные с хранением, в настоящее время выполняются на уровне FS / блочного уровня / контроллера SATA?

флаг cn

Время от времени наш Linux-сервер LAMP (использующий PHP-FPM, XFS на тонком LVM на HW RAID, Centos8) становится недоступным и перестает отвечать на HTTP(S)-запросы.

С помощью централизованного ведения журнала мы обнаружили, что в таких случаях средняя загрузка быстро достигает сотен, в то время как все больше и больше процессов (systemd-journald, процессы php, потоки ядра xfs/dm...) переходят в состояние D. По данным iostat и pidstat, ЦП и диск почти не загружены, а средняя нагрузка колеблется в районе 170, что довольно странно. Из вывода htop/ps не видно ни одного, ни группы мошеннических процессов, которые могли бы объяснить такое поведение. Это просто стандартные процессы, которые, кажется, сталкиваются с каким-то «блокпостом».

Единственная другая странность с мониторингом дисков заключается в том, что во время этих событий перегрузки iostat периодически сообщает о довольно высоком w_await для раздела /var (2500-5000 мс, в то время как другие разделы, такие как /var/log, /var/lib/mysql, в основном не преодолеваются). 10 мс). Этот раздел большую часть времени должен быть тихим, поэтому неясно, почему iostat сообщает о таком большом времени w_await.

Тогда единственное решение — выключить и снова включить сервер.

Это происходит на двух серверах одного типа и никогда на других. Кажется, это какая-то неисправность ФС/блочного слоя/контроллера/диска; многие процессы внезапно начинают ждать диска или чего-то еще в ядре, но, согласно iotop/iostat, диск мало что делает.

Есть ли способ запросить драйвер FS/блочного уровня/контроллера ядра Linux, что именно они делают с хранилищем и от имени какого процесса? Стандартные инструменты, такие как iotop/iostat, сообщают мне только имена активных процессов ввода-вывода и активность разделов диска, но не сообщают, какие процессы обращаются к какому разделу диска и что именно они там делают.

Wilson Hauck avatar
флаг jp
Размещение вашей первой страницы htop было бы весьма информативно.
флаг cn
Это трудно получить, так как перегрузка происходит очень быстро, и тогда невозможно войти в систему. Однако из наших логов ps и iostat ясно, что ни процессор, ни диск не забиваются. Наибольшим потребителем ЦП и диска является MariaDB, но это, похоже, не причина, поскольку журналы команды SQL «показать полный список процессов»; показать, что запущенные запросы либо очень просты, либо вообще отсутствуют (пустой список процессов запросов).
Wilson Hauck avatar
флаг jp
Пожалуйста, опубликуйте htop и ПОКАЖИТЕ ПОЛНЫЙ СПИСОК ПРОЦЕССОВ; всякий раз, когда вы можете получить его, занят или нет. Спасибо
Рейтинг:2
флаг ua

Я считаю, что в подобных ситуациях полезно регулировать количество подключений выше по стеку.

Когда больше, скажем, 100 активный процессы запущены, они спотыкаются друг об друга. Они борются за ресурсы (процессор и т. д.). Чистый эффект заключается в том, что все процессы работают медленнее, иногда до такой степени, что кажется, что единственным решением является перезагрузка сервера.

В случае с MariaDB я рекомендую включить медленный журнал, чтобы вы могли определить запрос, который оказывает наибольшее влияние на систему. Тогда ускорь его. Если вам нужна помощь, предоставьте запрос, его объяснение и создание таблицы. Более: http://mysql.rjweb.org/doc.php/mysql_analysis#slow_queries_and_slowlog

Ускорение нескольких запросов, вероятно, уменьшит 170 Load Average и I/O, тем самым устранив узкое место.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.