Предыдущая конфигурация:
- nginx (главный proxy), который раздает трафик в
- haproxy (ради возможности балансировать по нагрузке), который распределяет нагрузку по нескольким webapp-серверам
- с 16-ю mongrelами на каждом
Проблемы:
- "Утекающая" память, периодический out of memory на серверах, лечится только перезапуском mongrelов.
- Запросы, занимающие десятки секунд из-за неверной балансировки (в нагруженный mongrel все-таки попадает несколько "тяжелых" запросов).
- Сложность управления кластером монгрелов - постоянные проблемы при перезапуске, "не стартующие" mongrelы и т.п.
Новая конфигурация:
- nginx (proxy) остался
- Phusion Passenger + Ruby Enterprise Edition на каждой машине.
Результат:
Комментарий: переход на Phusion Passenger на Week 39, объем занятой памяти - это белая область на графике, растущая сверху вниз. До перехода на Passenger объем свободной памяти стремительно уменьшался, иногда доходя до нуля, после перехода остается более-менее стабильным. Использование CPU осталось на прежнем уровне (как и ожидалось).
После перехода исчезли запросы, которые по непонятным причинам занимали десятки секунд - время выполнения коррелирует со сложностью запроса.
Так что если вы еще не переключились, мы идем к вам :)
P.S. Отдельное спасибо glebpom за подсказку.
Comments
Comments powered by Disqus