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

У нас есть проксирование nginx на apache с / mod_wsgi и очень высокая нагрузка на сервер, как отследить причину?

У нас есть экземпляр nginx, расположенный перед apache 2 (nginx обрабатывает статические ресурсы, запросы динамического содержимого передаются через прокси в apache), который в основном использует mod_wsgi для сервера различных приложений python / django.

Мы внезапно наблюдаем высокую нагрузку на сервер (постоянно поднимающуюся до более чем 50, обычно менее 1) и ищем наилучшие способы найти причину.

Есть ли способ узнать, какие виртуальные хосты отвечают за процессы apache?

Также приветствуются некоторые общие советы по диагностике причины высокой нагрузки на сервер.

Изменить: спасибо всем за их помощь, это оказалось вызвано ошибкой кода, и перенастройка сервера не потребовалась. Однако предоставленные советы пригодятся в будущем.

В mod_status модуль в Apache покажет вам, какой виртуальный хост / запрос обрабатывает конкретный процесс, но это будет полезно для вас, только если запросы являются долгоживущими. Добавление время исполнения (%D) к вашему апачу LogFormat тоже полезно.

Более важно выявить узкое место. Для этого нужно исследовать iostat и vmstat (обычно устанавливается по умолчанию) и прекрасный новый инструмент, который объединяет эти два и добавляет еще больше вещей, dstat.

Если при запуске vmstat вы видите много действий в столбце «wa» под заголовком «cpu» (т. Е. Много времени, затрачиваемого на ожидание ввода / вывода), то я подозреваю, что проблема на самом деле в nginx, а не в Apache. Возможно, он выполняет слишком много операций ввода-вывода, потому что его буферы недостаточно велики для обработки проксируемого содержимого.

Попробуйте добавить это в nginx.conf:

proxy_buffers  32 4k;

При необходимости увеличьте.