У меня есть сайт 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 секунд в зависимости от сложности вашего приложения, поэтому у вас обычно будет несколько запущенных, даже если запросы не обслуживаются.