У меня есть рабочий сайт на drupal, работающий на EC2. Недавно мы заметили, что загрузка нашего процессора EC2 достигает 100%. Я проверил посещаемость своего сайта, там мало пользователей. Я проверил процесс, запущенный в EC2, с помощью top
команда. Я видел одну команду jbd2_sda1-8
. Я не мог понять, для чего используется эта команда. Я видел, что команда была вызвана пользователем www-data
и он показывает 200% использования ЦП для этой команды. Насколько я знаю, www-data
означает, что команда была вызвана каким-то приложением, запущенным на моей машине. Я использую PHP-7.1 и Nginx для своего сайта drupal. Я выполнил команду sudo service php7.1-fpm restart
. Потом проверил процессы. Процесс был убит. Итак, я предполагаю, что команда была вызвана каким-то процессом php. Я проверил мониторинг EC2, загрузка процессора снизилась до 3%.
Около часа все выглядело нормально, внезапно я снова получил предупреждение от AWS о высокой загрузке ЦП. Я проделал тот же процесс для отладки. На этот раз я увидел другую команду kjournald
. Этот процесс требует высокой загрузки процессора, что также связано с пользователем. www-data
.
Я запутался, я попытался выяснить значение этой команды, я ничего не понял и не нашел никакой связи между старым процессом и новым процессом.
Эта проблема продолжается. Если я перезапущу php, процесс будет остановлен, и через некоторое время он снова появится. Я не знаю, в чем проблема.
Мои эксперименты по устранению неполадок:
Я застрял здесь. Понятия не имею, что происходит. Кто-нибудь может помочь?
Если kjournald
потребляет много ресурсов, это означает, что ваша ОС выполняет много операций журналирования, которые возникают из-за изменений в файловой системе (дисковых операций).
Это означает, что что-то делает намного больше записи в файловую систему, чем должно, или что есть проблема с вашим блочным хранилищем.
Использовать lsof
чтобы узнать, какие файлы используются вашей операционной системой в любой момент времени.
В противном случае, если ваши производственная и промежуточная среды были созданы одновременно, с одним и тем же классом экземпляра, в одной зоне доступности, и вы уверены, что ваше PHP-приложение хорошо спроектировано (должно быть в порядке, если это Drupal) и у вас есть в последнее время ничего не менял, я бы подумал о повторной инициализации экземпляров EC2.
Сделайте снимок и повторно разверните, в идеале в другом классе экземпляра, чтобы убедиться, что вы переходите в другой стек инфраструктуры.
Я предполагаю, что экземпляры поддерживаются EBS, и в этом случае они могут использовать некое блочное хранилище в AWS, которое вышло из строя.