Я запускаю приложение rails с apache + passenger на виртуальных серверах, для которых не настроено пространство подкачки.
Сайт получает приличный объем трафика при ежедневных запросах 200K +, а иногда всей системе не хватает памяти, что вызывает странное поведение во всей системе.
Вопрос в том, что есть ли способ настроить apache или пассажира, чтобы он не исчерпал память (например, изящно перезапустить экземпляры пассажира, когда они начнут использовать, скажем, более 300M памяти).
Серверы имеют 4 ГБ памяти, и в настоящее время я использую опцию PassengerMaxRequests для пассажира, но это, похоже, не самое надежное решение здесь.
В настоящее время я также не могу переключиться на nginx, так что я не могу сохранить какую-то комнату.
Любые умные идеи, которые я, вероятно, упускаю, приветствуются.
Редактировать: мое временное решение
Я не перезагружал экземпляры Rails, когда они превышают определенный объем использования памяти. Engine Yard написал отличное сообщение в блоге о проблеме раздувания памяти ActiveRecord . Это наш главный подозреваемый по этому вопросу. Поскольку у меня не было много времени для оптимизации приложения, я установил PassengerMaxRequests на 300 и добавил 2 ГБ дополнительной памяти на сервер. С тех пор все было хорошо. Сначала я волновался, что повторный запуск экземпляров Rails делает его медленным, но, похоже, это не оказывает влияния, о котором мне следует беспокоиться.