Мой рабочий сайт на 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
, чтобы посмотреть, какие файлы используются вашей операционной системой в данный момент времени.
В противном случае, если бы ваше окружение Production и Staging были созданы одновременно, с тем же классом экземпляра, в том же AZ, и вы уверены, что ваше PHP-приложение хорошо спроектировано (должно быть в порядке, если его Drupal), и вы ничего не изменили в последнее время, я бы подумал о перепроектировании экземпляров EC2.
Сделайте снэпшот и переразверните, в идеале на другой класс экземпляров, чтобы убедиться, что вы переходите в стек другой инфраструктуры.
Я предполагаю, что экземпляры поддерживаются EBS, и в этом случае они могут использовать какое-то блочное хранилище в AWS, которое пошло не так.