ПРОЕКТЫ 


  АРХИВ 


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: worker process exited on signal 11 (core dumped)



Hello!

On Tue, Feb 09, 2010 at 05:29:51PM +0300, Vladimir Sopot wrote:

> То ли сначала не заметил, то ли это после configure ...... 
> --add-module=../ngx_http_upstream_keepalive-2ce9d8a1ca93/
> 
> 2010/02/09 16:20:47 [error] 28108#0: *30149916 memcached sent invalid trailer 
> while sending to client, client: 75.76.60.101, server: tablew.ru, request: 
> "GET /site/user.php?user=YYYYY HTTP/1.1", upstream: 
> "memcached://unix:/tmp/memcached.sock:", host: "tablew.ru", referrer: 
> "http://tablew.ru";
> 
> 2010/02/09 16:20:48 [alert] 11625#0: worker process 28108 exited on signal 11 
> (core dumped)
> 
> memcached 1.4.4
> /usr/local/bin/memcached -u nobody -m 256 -c 8192 -d -s /tmp/memcached.sock

Это интересно, к этому мы вернёмся позже.

> в nginx.conf:
> 
> upstream tablew_mmc {
>       server  unix:/tmp/memcached.sock;
>       keepalive 30;                                                           
>                                                             
>       }
> ....
> 
> location = /site/user.php {
>       set $memcached_key 
> "${query_string}_${cookie_shar}${cookie_show}${cookie_uid}${cookie_admin}";
>       memcached_pass tablew_mmc;
>       ssi on;
> 
>       error_page 404 502 /site/user_real.php?$query_string;
>       }
> .... 
> в этом ^^^ еще несколько  <!--# ssi include virtual="/mmc/today/....." -->
> конкретно эта корка на запросе с 13 

А /site/user_real.php как обрабатывается?  В корке был именно он.

Кстати, вероятно имелось ввиду всё-таки

        error_page 404 502 = /site/user_real.php?$query_string;

Note '='.

> 
> location ~ /mmc/today/(\d+) {
>       internal;                                                               
>                                                         
>       set $memcached_key "today_$1";
>       memcached_pass tablew_mmc;
>       error_page 404 502 /main/ssi/today_counter.php?ad=$1;
>       }
> 
> >> # ../sbin/nginx -V
> >> nginx version: nginx/0.8.33
> >> built by gcc 4.3.2 [gcc-4_3-branch revision 141291] (SUSE Linux) 
> >> configure arguments: --with-http_stub_status_module 
> >> --without-mail_pop3_module --without-mail_imap_module 
> >> --without-mail_smtp_module --without-http_autoindex_module 
> >> --without-http_browser_module --without-http_charset_module 
> >> --without-http_map_module --without-http_userid_module --with-file-aio
> 
> добавил --add-module=../ngx_http_upstream_keepalive-2ce9d8a1ca93/
> жить стало интереснее, работает быстрее, падает, как и раньше, произвольно. 
> core уже от этой сборки
> 
> > Если aio используется - попробовать отключить.
> 
> не помогло
> 
> > Также было бы замечательно пересобраться с --with-debug и 
> > попробовать получить debug log.
> 
> сервер сильно боевой - лог получается космический. debug_connection не 
> помогает - я не могу нарваться на эту ошибку :(

Если сервер лог писать успевает - то дождаться проблемы вращая по 
необходимости, после чего отключить и неспеша выдрать из него 
нужное.  Не имея debug log'а - очень тяжело разбираться с 
подобными вещами.

Единственная ситуация в которой я смог воспроизвести нечто 
похожее - это бесконечная рекурсия SSI запросов.  Защита от неё 
есть, но поломана начиная с 0.7.25.  Прилагающийся патч возвращает 
защиту на место.

Если это таки была рекурсия - в логах должно появится что-то вроде

... [error] ... subrequests cycle while processing ...

Ну и корки должны пропасть.

Maxim Dounin
# HG changeset patch
# User Maxim Dounin <mdounin@xxxxxxxxxx>
# Date 1265769044 -10800
# Node ID 09972a4975970f7c3510177b8a287283d3a53c58
# Parent  66adffc35a4699210362cfa10a2c279732861f41
Core: protect from subrequest loops.

Protection was broken in 0.7.25.

diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c
--- a/src/http/ngx_http_core_module.c
+++ b/src/http/ngx_http_core_module.c
@@ -2147,7 +2147,6 @@ ngx_http_subrequest(ngx_http_request_t *
 
     sr->uri_changes = NGX_HTTP_MAX_URI_CHANGES + 1;
 
-    r->main->subrequests++;
     r->main->count++;
 
     *psr = sr;
diff --git a/src/http/ngx_http_request.c b/src/http/ngx_http_request.c
--- a/src/http/ngx_http_request.c
+++ b/src/http/ngx_http_request.c
@@ -1938,6 +1938,7 @@ ngx_http_finalize_request(ngx_http_reque
         if (r == c->data) {
 
             r->main->count--;
+            r->main->subrequests++;
 
             if (!r->logged) {
 
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.