ПРОЕКТЫ 


  АРХИВ 


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[2]: Странное поведение nginx


  • To: "Andrey Y. Ostanovsky" <nginx-ru@xxxxxxxxx>
  • Subject: Re[2]: Странное поведение nginx
  • From: Igor Savchenko <dicsydel@xxxxxxxxx>
  • Date: Sat, 3 Mar 2007 16:26:14 +0200
  • Dkim-signature: a=rsa-sha1; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:date:from:x-mailer:reply-to:organization:x-priority:message-id:to:subject:in-reply-to:references:mime-version:content-type:content-transfer-encoding; b=pHyfvlpXi7XseOGb12uGa3DDl5U0UgsSpn7yj9qLBpZklcZHBmTxHpSXePSwzd5kHkrZAsu9eYqNo+I/GD51h5+x2FkZGlbT7C67NbV5YYV7S37xhFu5j590IrHcJkLD01OsU1CsmJBvhD5wyFxsrk6P9D161Y4VoBpjlLLpW5o=
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:date:from:x-mailer:reply-to:organization:x-priority:message-id:to:subject:in-reply-to:references:mime-version:content-type:content-transfer-encoding; b=GVhcZbEyjYwKSHCYBVsptwEw8atyFXvAGFrwCDM/McIiAWEhxHkmdP3qhSvDKEhqQ1TQQJbgLDqhRafVwGyAsRAp4NwFF1lPImtgpn7ovkdwhU9/mFVGMitJLGFglHTaO4NBFmjyjB2EGFgXTUjKlokrewQYnyI/x/2kJgRca8w=
  • In-reply-to: <45E97FA8.1010306@xxxxxxxxxxxxxxxxx>
  • Organization: Webta
  • References: <1258861617.20070302193321@xxxxxxxxx> <45E94C95.9050900@xxxxxxxxxxxxxxxxx> <1979811811.20070303141221@xxxxxxxxx> <45E97FA8.1010306@xxxxxxxxxxxxxxxxx>

В общем тут наш главный сисадмин ковырял исходники совместно с дебуг
логом и в общем похоже в nginx происходит iteger overflow. Вот что он наковырял:

######################################################################################################
Переполнение переменной pc->tries, возможно в функции 
ngx_http_upstream_get_ip_hash_peer().
(http/modules/ngx_http_upstream_ip_hash_module.c:189).

выливается в:

2007/03/03 04:15:41 [debug] 2743#0: *5229 get ip hash peer, try: 1
2007/03/03 04:15:41 [debug] 2743#0: *5229 get ip hash peer, hash: 1 0002
2007/03/03 04:15:41 [debug] 2743#0: *5229 get ip hash peer, hash: 1 0002
2007/03/03 04:15:41 [debug] 2743#0: *5229 get ip hash peer, hash: 1 0002
2007/03/03 04:15:41 [debug] 2743#0: *5229 get ip hash peer, hash: 1 0002
2007/03/03 04:15:41 [debug] 2743#0: *5229 get ip hash peer, hash: 1 0002
2007/03/03 04:15:41 [debug] 2743#0: *5229 get ip hash peer, hash: 1 0002
2007/03/03 04:15:41 [debug] 2743#0: *5229 get ip hash peer, hash: 1 0002
2007/03/03 04:15:41 [debug] 2743#0: *5229 get ip hash peer, hash: 1 0002
2007/03/03 04:15:41 [debug] 2743#0: *5229 get ip hash peer, hash: 1 0002
2007/03/03 04:15:41 [debug] 2743#0: *5229 get rr peer, try: 4294967288

В некоторых случаях в ngx_http_upstream_get_ip_hash_peer() приходил уже 
переполненный pc->tries.

Workaround:
diff -Naur 
nginx-0.5.14_orig/src/http/modules/ngx_http_upstream_ip_hash_module.c 
nginx-0.5.14/src/http/modules/ngx_http_upstream_ip_hash_module.c

--- nginx-0.5.14_orig/src/http/modules/ngx_http_upstream_ip_hash_module.c       
Fri Jan 12 14:26:39 2007
+++ nginx-0.5.14/src/http/modules/ngx_http_upstream_ip_hash_module.c    Sat Mar 
 3 06:05:28 2007
@@ -136,6 +136,11 @@
     ngx_log_debug1(NGX_LOG_DEBUG_HTTP, pc->log, 0,
                    "get ip hash peer, try: %ui", pc->tries);
 
+    if ( pc->tries > 4290000 ) {
+       pc->tries = 1;
+    }
+
+
     /* TODO: cached */
 
     if (iphp->tries > 20 || iphp->rrp.peers->number == 1) {
@@ -190,6 +195,10 @@
         }
 
         if (++iphp->tries >= 20) {
+               if ( pc->tries > 4290000 ) {
+                       pc->tries = 1;
+               }
+
             return iphp->get_rr_peer(pc, &iphp->rrp);
         }
     }

     
-- 
WBR, Nicholas A. Toursky
   Webta Inc.

mailto: hinore@xxxxxxxxx
ICQ: 95947797
################################################################################################################

Его воркараунд вроде работает. Вот уже больше 2ух часов все окей. Я
думаю тут нужны коменты Игоря и его нормальный фикс.



---------------------------------
Igor V. Savchenko

http://webta.net

mailto: igor@xxxxxxxxx
ICQ: 86915046




 




Copyright © Lexa Software, 1996-2009.