ПРОЕКТЫ 


  АРХИВ 


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: Gena Makhomed <gmm@xxxxxxxxx>
  • Date: Wed, 17 Feb 2010 20:33:01 +0200
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=csdoc.com; s=dkim; t=1266431585; bh=5M67vXIyrwMQMFB00JGuOrzlEXQiCkd34YSNzq5q4zQ=; h=Message-ID:Date:From:User-Agent:MIME-Version:To:Subject: References:In-Reply-To:Content-Type:Content-Transfer-Encoding; b=J ZWPesEGk+xa91aTmkKzfc0Oj4h+qyhGz3c41AastD0O1dLVnyEpfmH2RDDSRy+a89+p BbhLckTH/Nx27lORhw+HUQA2uz5VBMNBj9SZibvdff6bX5DVi0PCMfQB/Ynn4wlV/fh 8PjLea6fJY8w4EBuzELI4yqKc+rtxY+dEWSg=
  • In-reply-to: <4B7C1BE3.8030108@xxxxxxx>
  • References: <4B7AAE0A.8010201@xxxxxxx> <201002170810.20429.slava@xxxxxxx> <4B7C1BE3.8030108@xxxxxxx>

On 17.02.2010 18:40, calculator@xxxxxxx wrote:

worker_processes 8;
worker_connections 16384;

16384 * 8 == 65536 * 2

fs.file-max = 65536

fs.file-max - это system file descriptor limit.
65536 может быть слишком мало для веб-сервера.

текущее использование дескрипторов
можно посмотреть в sysctl fs.file-nr

кроме лимита на всю систему в CentOS есть лимит
по умолчанию на каждый процесс: 1024 дескриптора.

с помощью выполнения команды ulimit -n 16384
в init-script`е этот лимит можно увеличить.

кстати, в новых версиях nginx уже есть проверка,
что RLIMIT_NOFILE не меньше чем worker_connections.

При определенной посещаемости nginx перестает отдаваться. В netstat
ругань на "times the listen queue of a socket overflowed".

NNN times the listen queue of a socket overflowed

новые запросы поступают быстрее, чем сервер успевает
их обрабатывать и backlog сокета переполняется.

количество Active connections можно посмотреть в nginx-status
документация: http://wiki.nginx.org/NginxHttpStubStatusModule

>>> nginx с дебагом ругается:
>>> 2010/02/11 14:05:52 [info] 27879#0: *53029559 recv() failed (104:
>>> Connection reset by peer) while reading client request line, client:
>>> 92.37.202.227, server: www.site.ru
>>> 2010/02/11 14:05:52 [info] 27879#0: *53029559 writev() failed (32:
>>> Broken pipe) while reading client request line

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

Процессы nginx'а висят примерно пополам в sleep/run.
Если рядом к примеру на 81 порт запустить еще 1 nginx, он хорошо
отдается.
somaxconn и backlog выкручены.

for pid in $(pgrep nginx) ; do cat /proc/$pid/limits ; done | grep open

--
Best regards,
 Gena


_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.