Ограничение соединений с backend
Sergej Kandyla
sk.paix at gmail.com
Tue Jun 16 18:13:08 MSD 2009
Vladimir Latyshev пишет:
> Предположим, нагрузка на сервис колеблется от 5 до 30 запросов в сек.
> Запас прочности к примеру 100. Если выше - поднимается la и сервера
> уходят в думку, а клиенты - в ожидание. Последствия баннерной рекламы
> в соцсетях могут превысить все ожидания. DOS атаки тоже никто не
> отменял. При длительности в несколько часов времени среагировать
> другими способами может не оказаться.
> Вот и хотим пойти путем наименьшего зла.
> Короче говоря, речь не о штатной нагрузке а о всплесках, которые
> весьма вероятны. Закладываться на них горизонтальным масштабированием
> - дорого.
Защита от перегрузок это отдельная песня.
Я думаю, стоит определиться с характером запросов и выделять агрессивных
клиентов.
Желательно банить таких на основе фаервольных фильтров
--connlimit-above 15 -j REJECT || source-track rule (pf)
Возможно, conn_limit для $remote_addr$http_user_agent, чтобы кто-то
избыточно агресивно не нагружал бекенд
Против мелко-средних DDoS, которые не забивают полностью канал, ничего
лучше скриптов вроде еще не придумали. Т.е. получается мониторинг +
трезвый админ + скрипты. Ботов в фаерволл.
Все остальное будут условно нормальные юзера.
При этом, nginx получает максимально быстро ответ от бекенда и уже сам
обслуживает медленных клиентов.
Если число ликвидных пользователей превысит число свободных чаилдов
бекенда (апача), то вы будете получать ваше
error_page 503 =200 /sorry.html;
Чем проще - тем лучше!
>
>
> 16 июня 2009 г. 17:02 пользователь Sergej Kandyla <sk.paix at gmail.com
> <mailto:sk.paix at gmail.com>> написал:
>
> Vladimir Latyshev пишет:
>
> Представляю прекрасно. Если при большой нагрузке запрос
> выполняется 1 секунду, то 100 апачей, о которых я писал - это
> 100 запросов в секунду. Да, это много, но не настолько, чтобы
> говорить, что такого не бывает ;) А соломку надо стелить заранее.
>
>
> подготовка - это хорошо ;)
> Но, есть такая индейская пословица: "Лошадь сдохла - слезь"
>
> Если бекенд подает симптомы к умиранию, то его и нужно
> оптимизировать, кешировать, маштабировать.
> Попытка скрыть от клиентов service degradation - это все равно что
> попытка оживить дохлую лошадь.
>
> В конце концов о каких медленных клиентах шел разговор, если их
> обслуживает nginx ?
>
--
Best wishes, Sergej Kandyla
Всегда улыбайтесь жизни и жизнь всегда улыбнется вам!
More information about the nginx-ru
mailing list