PassengerSpawnMethod "умный" не уменьшает объем памяти?
Наше приложение Rails 3.2 (Ruby 2.1.5) находится позади Passenger (4.0.59) и использует метод порождения по умолчанию, который в документации для пассажиров указан как "умный".
Интеллектуальное нереста, как утверждается, позволяет сэкономить около 33% памяти на процесс.
Мне было любопытно, какую пользу мы получили от использования умного порождения, поэтому я изменил наш конфиг, чтобы указать "прямое" порождение.
Однако после переключения на "прямой" объем памяти наших процессов не увеличился, как я ожидал. Похоже, это указывает на то, что мы не получаем никакой выгоды от умного нереста.
Любые теории о том, почему это будет иметь место?
Разве мы на самом деле не используем умное порождение, несмотря на то, что оно указано в файле конфигурации? Является ли "top" outpu (в частности, столбцы VIRT и RES) хорошим способом измерения использования памяти на процесс?
Что-то еще целиком?
1 ответ
Вам нужно Ruby >= 2.0.0 для того, чтобы воспользоваться преимуществами экономии памяти, потому что сборщик мусора Ruby только для копирования на запись, начиная с 2.0.0.
Вы не должны использовать "top" для измерения памяти, потому что она не учитывает общую память.
Оба этих факта задокументированы в пассажирской документации: