Phusion-Passenger, кажется, создает МНОГО (140+) осиротевших процессов - PullRequest
0 голосов
/ 06 октября 2009

У нас 3 сервера Apache Passenger, использующих одну и ту же файловую систему, на каждом из которых запущено 11 приложений Rails.

Мы установили

  1. PassengerPoolIdleTime = 0, чтобы гарантировать, что ни одно из приложений никогда не исчезнет полностью, и

  2. PassengerMaxPoolSize = 20, чтобы убедиться, что у нас достаточно процессов для запуска всех приложений.

Проблема в том, что когда я запускаю статистику памяти пассажиров на одном из серверов, я вижу 210 ВМ!

И когда я запускаю статус пассажира, я вижу 20 экземпляров приложения (как и ожидалось)!

Кто-нибудь знает, что происходит? Как мне определить, какие из этих 210 экземпляров все еще используются, и как регулярно их убивать? Сделает ли PassengerMaxInstancesPerApp что-нибудь, чтобы уменьшить эти, казалось бы, осиротевшие экземпляры?

Ответы [ 4 ]

2 голосов
/ 08 октября 2009

Оказывается, у нас на самом деле работает так много рабочих процессов Apache, и только 24 из них являются процессами Пассажира (спросил кто-то немного опытнее меня). На самом деле мы размещаем гораздо больше веб-сайтов и общих учетных записей, чем я думал. Спасибо за все ответы, хотя!

1 голос
/ 07 октября 2009

Вы можете получить точный ответ о том, сколько процессов в Rails у вас есть, запустив эту команду:

ps auxw | grep Rails | wc -l

Я сомневаюсь, что на самом деле у вас действительно запущено более 100 процессов, так как примерно по 50 МБ каждый из них будет совместно использовать более 5 ГБ ОЗУ и / или подкачку, и ваша система, вероятно, замедлится до ползучести.

0 голосов
/ 07 октября 2009

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

0 голосов
/ 06 октября 2009

Не столько ответ, сколько полезный диагностический совет.

Попробуйте добавить промежуточное программное обеспечение Rack :: ProcTitle в свой стек. Мы использовали его в производстве в течение многих лет. Запуск ps aux должен дать информацию о том, чем занят работник (в режиме ожидания, при передаче конкретного запроса и т. Д.).

Я бы не предположил, что эти процессы порождаются непосредственно пассажиром. Это может быть что-то более глубокое в вашем приложении.

...