Ограничение соединений с 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