worker_connections 50;

Igor Sysoev is at rambler-co.ru
Wed Sep 17 14:12:08 MSD 2008


On Wed, Sep 17, 2008 at 01:35:46PM +0400, Igor Sysoev wrote:

> On Wed, Sep 17, 2008 at 12:45:58PM +0400, Михаил Монашёв wrote:
> 
> > ММ> В  какти  по  графику  видно,  что accepts requests и handled requests
> > ММ> разошлись  в  разные  стороны:  accepts  requests  выросло,  а handled
> > ММ> requests  упало до нуля.
> > 
> > Причём worker_connections 50; было выставлено в 19-00, а графики
> > начали расходиться только 23-00. Т.е. в начале, на больой нагрузке всё
> > отлично работало. А как она начала спадать, так постепенно, где-то за
> > два часа, отдача статики перестала работать.
> 
> Поскольку nginx не планировался для работы в режиме Апача,
> то там есть такое ограничение - если свободных соединений меньше
> NGX_ACCEPT_THRESHOLD (100), то accept'ы штрафуются - они пропускаются.
> В случае "worker_connections 50" штраф наступает после первого же accept'а.
> На большой нагрузке штраф имеет большие шансы быстро кончиться, а на малой -
> не кончиться вообще.
> 
> Текущий workaround:
> 
> event {
>    accept_mutex  off;
> }
> 
> Надо бы пересмотреть логику: по крайней мере, сделать NGX_ACCEPT_THRESHOLD
> автонастраиваемым в зависимости от worker_connections, например,
> 
>     worker_connections / 10

Патч. Делим на 8.


-- 
Игорь Сысоев
http://sysoev.ru
-------------- next part --------------
Index: src/event/ngx_event_accept.c
===================================================================
--- src/event/ngx_event_accept.c	(revision 1573)
+++ src/event/ngx_event_accept.c	(working copy)
@@ -82,7 +82,7 @@
         ngx_atomic_fetch_add(ngx_stat_accepted, 1);
 #endif
 
-        ngx_accept_disabled = NGX_ACCEPT_THRESHOLD
+        ngx_accept_disabled = ngx_cycle->connection_n / 8
                               - ngx_cycle->free_connection_n;
 
         c = ngx_get_connection(s, ev->log);
Index: src/core/ngx_config.h
===================================================================
--- src/core/ngx_config.h	(revision 1573)
+++ src/core/ngx_config.h	(working copy)
@@ -110,8 +110,6 @@
 #define ngx_inline      inline
 #endif
 
-#define NGX_ACCEPT_THRESHOLD   100
-
 #ifndef INADDR_NONE  /* Solaris */
 #define INADDR_NONE  ((unsigned int) -1)
 #endif


More information about the nginx-ru mailing list