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

Процессы стойки занимают центральный процессор в Passenger

У меня есть сайт Spree со следующим стеком:

Недавно я обновился со Spree 0.70.3, что также принесло обновление Deface с 0.7.x до 0.8.0. С тех пор дела шли очень нестабильно.

В последнее время мы видели некоторые процессы загрузки процессора которые увеличивают нагрузку на сервер и останавливают все это. Это процессы Rack, и похоже, что их запускает Passenger; они принадлежат site-runner user, непривилегированный пользователь, владеющий кодом приложения. (Passenger автоматически запускает код сайта от имени пользователя, которому он принадлежит.) Если я перезапускаю Nginx и убиваю запущенные процессы, это помогает на некоторое время, но в конечном итоге аналогичные процессы возвращаются и снова сбивают с толку.

ETA: сейчас я смотрю на passenger-status и passenger-memory-stats которые предполагают, что это процессы подачи заявки Пассажиром. Если он убегает или зависает, должно быть проблема с моим приложением.

Как лучше всего выяснить, где это висит?

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

user -> nginx -> passenger -> Rack process -> generates page

В вашей системе будет несколько процессов Rack, поскольку каждый из них является однопоточным и может обрабатывать только один запрос за раз. Задача Passenger - проксировать запросы и отправлять их в процессы Rack, а также запускать / останавливать / повторно использовать эти процессы Rack по мере необходимости. Обычно процесс Rack запускается от 5 до 45 секунд в зависимости от сложности вашего приложения, поэтому у вас обычно будет несколько запущенных, даже если запросы не обслуживаются.