Назад | Перейти на главную страницу

ЦП в веб-приложении PHP нагружается до 100%: как узнать, с чего оно началось?

У меня есть сервер Debian (Amazon AWS) с веб-приложением PHP, которым пользуются сотни пользователей.

Моя загрузка ЦП почти всегда ниже 10%. Сегодня около 12:00 ~ у меня было 2 безумных прыжка на 100% ровно за 1 минуту, а затем я вернулся в норму.

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

Как мне узнать, что произошло в это время на моем процессоре, какие команды выполнялись и т. Д.?

Лучшим инструментом для такого расследования будет «сар».

«sar» - это встроенная команда Linux, которая на постоянной основе собирает все данные о производительности, сохраняет их и позволяет проводить исторический анализ для выявления узких мест.

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

Итак, в основном то, что нужно сделать, - это включить sar, дать ему поработать несколько дней, а в следующий раз, когда вы поймаете этот скачок производительности процессора, просто просмотрите файлы журнала sar и найдите, что произошло в вашей системе за это конкретное время.

Вот хороший ресурс о "сар".

Попробуйте новую реликвию APM. Это отлично подходит для мониторинга веб-приложений

Попробуйте какой-нибудь инструмент мониторинга процессора, запустите его на некоторое время и проверьте журналы ... если вы используете WordPress или какие-либо инструменты CMS, попробуйте отключить плагины и проверьте.

Здесь нужно отметить несколько моментов

  1. Ваш сайт может быть поражен множеством людей / IP одновременно
  2. Ваш код / ​​скрипт может перегружаться или иметь цикл, который не закончился

Чтобы исправить это, вы бы предпочли использовать несколько ядер / потоков вашего сервера, попробуйте оптимизировать свой код.

Как вы отметили время, проверьте журналы, чтобы проверить, какой конкретный сценарий был запущен в этот момент времени.