ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: несколько fastcgi серверов



On Sunday, August 31, 2008 at 20:19:25, Alex Vorona wrote:

>> AV> если не делать accept - будет расти backlog и всё,
>> AV> запросы не будут перенаправляться на другие бекенды.

>> зачем перенаправлять запросы на другие backend`ы,
>> если там примерно такая же ситуация с нагрузкой?

AV> если такая же, то смысла нет

если время обработки одного запроса небольшое (что обычно и бывает),
тогда backend`ы будут иметь практически одинаковую нагрузку, AFAIU.

>> AV> Как я понимаю, хочется же дать знать nginx'у,
>> AV> что больше запросов на этот бекенд пока не надо посылать.

>> в результате еще больше вырастет нагрузка на остальные backend`ы,
>> они также с ней не смогут справиться и перейдут в состояние "failed".

>> через короткий промежуток времени живых backend`ов вообще не останется.
>> все клиенты будут получать на свои запросы 503 ошибку. DOS-атака удалась.

AV> от висящих в backlog коннектов, которые не accept'ятся, разве будет легче?

да. потому что они не занимают системных ресурсов по сравнению 503-редиректами.
клиенту обычно не столь важно - получить ответ немедленно или через 2-3 секунды.

AV> Клиенты(все) не получат ничего хорошего в любом случае,
AV> если скорость поступления входящих запросов превышает скорость их обработки.

в случае кратковременного всплеска активности (2-3-5-10-20 секунд)
- клиенты получат от сервера запрашиваемый ответ вместо 503 ошибки.

backlog сокета предназначен, насколько я понимаю, как раз для того,
чтобы сглаживать всплески, а не для того, чтобы бороться с DOS-атаками.

AV> Только в случае прохождения всех запросов через backlog
AV> бекенда клиент должен ждать больше, и может не дождаться.

может. когда backlog переполнится - тогда новый запрос получит 503 ошибку.
это будет означать что сервер уже не справляется с таким потоком запросов.

AV> В случае 503 и max_fails=0 nginx будет перебирать все бекенды,
AV> возвращая части клиентов 503, а остальным предоставляя нормальный
AV> сервис без ожидания запроса в backlog бекенда, как только
AV> осободившийся бекенд вместо 503 взял запрос в работу.

в результате получится такая ситуация, что backlog на всех backend`ах
"програмно выключен", т.е это будет эквивалентно настройке backlog=0.

при этом "Если не удастся получить успешный ответ от всех серверов,
то клиенту будет возвращён результат работы с последним сервером."

и при малейшем кратковременном всплеске нагрузки - клиентам сразу же
посыпятся 503 ошибки, вместо задержки с ответом в несколько секунд.

защиту от DOS-атак нужно делать на другом уровне, например, не пуская
ботов к ресурсоемким страницам, или отсекая их фильтром на уровне ip.

-- 
Best regards,
 Gena




 




Copyright © Lexa Software, 1996-2009.