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" для измерения памяти, потому что она не учитывает общую память.

Оба этих факта задокументированы в пассажирской документации:

Другие вопросы по тегам