ПРОЕКТЫ 


  АРХИВ 


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: ошибка в nginx ?


  • To: nginx-ru@xxxxxxxxx
  • Subject: Re: ошибка в nginx ?
  • From: Andrei Nigmatulin <andrei.nigmatulin@xxxxxxxxx>
  • Date: Wed, 9 Jul 2008 13:03:24 +0400
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:from:to:subject:date :user-agent:references:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:message-id; bh=sD0bB0X+9emB+7HPpWaJbJL+3Ywdw+Zeq6BrH4t/CZY=; b=w3AZhDGNp0oXv58e2kejwBjrNuB1Vppjk1forMYiHyoNir6nUhxBDnzomJy/68TtGj WsaMPDpNQGJIIiKvHki7gi5VlULeQxCbONU/5fG6CMKjfo3N1UJ9e9dS9Bn1dRAlqtdt vlTArYIrtMXFCk1Tsqhj8YpVUzEng+Zk6OJHE=
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:to:subject:date:user-agent:references:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :message-id; b=osBbvfFxWTz4Diw5X8lAHjZSqKdOO5wikj0Qr9zKoc1Gt1EJLFEWNcrEwZpWMoqJlU Td6r6Nkc+Umwsft02ecKMhvmMi5MzMlXnutxd+FN9Ye9+pSqlQO6GDXQV/Nd7zX5r/jj iqRFRWbgW/Y2PvaVgAi2FeNg/RDRQ5WLbmgBQ=
  • In-reply-to: <28405675.20080709105837@xxxxxxxxx>
  • References: <68978892.20080708195713@xxxxxxxxx> <200807090150.09116.anight@xxxxxxxxxxxxxxxx> <28405675.20080709105837@xxxxxxxxx>

On Wednesday 09 July 2008 11:58, Gena Makhomed wrote:
> On Wednesday, July 9, 2008 at 0:50:09, Andrei Nigmatulin wrote:
> >> если я все правильно понимаю - в той ситуации когда у backend`а
> >> уже закончился backlog - nginx в любом случае вернет ошибку 502 ?
>
> AN> Да.
>
> >> а какой при этом будет возвращен код ошибки из ядра,
> >> EINPROGRESS или EAGAIN - никакой особой роли не играет,
> >> и эту разницу можно будеть увидеть только по debug-логу?
>
> AN> Да. Тут в общем-то самое полезное, что может сделать nginx -
> AN> сообщить о том, что ошибка произошла в момент подключения.
> AN> Так как из "(134: Transport endpoint is not connected)
> AN> while sending request to upstream" сложно понять,
> AN> что на самом деле произошло.
>
> возможно это такой подход - не заниматься интерпретацией сообщений
> об ошибках, а только буквально сообщать в лог о том, что произошло.
> аналогичный случай с другой ошибкой - http://sysoev.ru/nginx/docs/faq.html

Нет, это не аналогичный случай. Тут ошибка ясна уже сразу после connect(), но 
попадает в лог не она, а другая, наведенная.

> >> возвращаясь к тому исходному сообщению
> >> http://groups.google.com/group/highload-php-ru/msg/a5a2883173f56f5d
> >> - получается, что тут нет ошибки в ядре linux, которую можно исправить
> >> и получить лучший результат (например, меньше ошибок 502 на клиенте) ?
>
> AN> Можно увеличить somaxconn. По опыту, многим помогает.
>
> это наверное единственный способ, если есть "всплески" запросов,
> и задержка с отдачей ответа будет лучше, чем возврат 502 ошибки.
>
> AN> Или перейти на tcp.
>
> а чем в такой ситуации может помочь переход на tcp?
> в пределах localhost`а tcp ведь работает медленнее,
> чем unix sockets - будет только больше 502 ошибок?

tcp сокет вернет EINPROGRESS в этом месте, а значит соединение все-таки 
случится, но позже. В итоге 502 ошибок вообще не будет. Ну только если 
бэкенду совсем плохо - появтся 504 после таймаута. А то, что tcp медленнее 
локальных сокетов вы сможете заметить только на тысячах или десятках тысяч 
rps. Зачем вам об этом вообще беспокоиться если php все равно съест 99.9% 
cpu ?

> AN> Или отказаться от linux.
>
> зачем? при переполнении backlog`а будет точно такое же
> поведение nginx`а и на других операционных системах...

По крайней мере в BSD такой проблемы нет.

> AN> Или каким-то образом ускорить выполнение
> AN> php скриптов, чтобы backlog не переполнялся.
>
> или добавить еще backend`ов, потому что существующие
> уже не справляются с нагрузкой, или настроить защиту
> от DDOS-атак, если часть запросов приходит от ботов.

Тоже вариант.
Или дождаться запуска БАК :-)


-- 
Andrei Nigmatulin
GPG PUB KEY 6449830D

Now I lay me down to sleep(3)
Pray the OS my core to keep
If I die before I wake
Pray the Disk my core to take


 




Copyright © Lexa Software, 1996-2009.