ПРОЕКТЫ 


  АРХИВ 


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]

post_action crash


  • To: nginx-ru@xxxxxxxxx
  • Subject: post_action crash
  • From: "Alexey Kovyrin" <alexey@xxxxxxxxxxx>
  • Date: Thu, 11 Dec 2008 03:49:21 -0500
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:sender :to:subject:mime-version:content-type:content-transfer-encoding :content-disposition:x-google-sender-auth; bh=4/R5pb7eT1NSUYIYde1BA999LUfTi7adHzXNlMTi8+o=; b=MHpGrNyRNxVFZAHzVVblEbl7vMEaI37U8GmOpB3wV/ro6sgDxA3tX5nGPrVD5hZ7RU c9fwIH3f8ZOx5lzI3jKXzRlJDY1/v6nqVCEGfL0BuY3/LhUgj55EsHPhE120rLfG4q4r z+H5Fr1v14W1+bshNa7GDNnobXlzOGBoDK7uU=
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:sender:to:subject:mime-version:content-type :content-transfer-encoding:content-disposition:x-google-sender-auth; b=HcVB19NQvOXZ3GkvuB/gRwuzYDC+QwE0TeVCNmz+qJKwzHnL6G3RsISpZQO1VkK1MB 93F6h+cHJRLJnvMsUTevEJlvXHSTv/wdXsRxjv5mxYXnHkr/vuKytbIZH035k7IuGfIu 858kluS6y2xSfRiZ6tARD1WDWEEoDUxITNpS4=

Решил тут заюзать post_action, чтобы после отдачи страницы документа
юзеру дергать наш сервер аналитики (раньше дергал с бекенда, но щас
приделали squid перед ним - не выходит, так как 90% запросов отдаются
из кеша).

Сделал вот так:

    location = @analytics_docview {
        internal;
        
        proxy_set_header  X-Analytics-page_type 'document';
        proxy_set_header  X-Analytics-docview_uri $docview_uri;
        proxy_set_header  X-Analytics-referer $http_referer;
        proxy_set_header  X-Analytics-user_agent $http_user_agent;
        proxy_set_header  X-Analytics-user_ip $remote_addr;
        
        proxy_connect_timeout 5;
        proxy_read_timeout 5;
        proxy_send_timeout 5;
        
        access_log logs/analytics-api.log main;
        error_log logs/analytics-api.error.log debug;
        
        proxy_pass http://XXXXXXX:4000/collector/register_hit;
    }

    # Distribute queries among different mongrel packs
    # DOCVIEW page - with caching
    location /doc/ {
        access_log logs/scribd.analytics.log analytics;
        add_header X-Served-By backend;
                
        set $docview_uri $uri;
        post_action @analytics_docview;
        ..........................................
        ... много всего, в основном
        ... proxy_pass'ы всякие
        ..........................................
    }



Результат оказался странным:

1) В еррор логе:

2008/12/11 02:20:38 [error] 7402#0: *36 could not find named location
"@analytics_docview" while sending to client, client: 66.249.90.136, s
erver: *.scribd.com, request: "GET
/doc/10536/PAN-F49A?query2=WWW.tininfo%40nsdl.co.in HTTP/1.0",
upstream: "http://10.10.170.18:8080/doc/10
536/PAN-F49A?query2=WWW.tininfo%40nsdl.co.in", host: "www.scribd.com"

2) проверял на трафике в 50+ QPS и за 10-15 секунд получил десяток
core-файлов :-/

Core was generated by `nginx: worker process       '.
Program terminated with signal 11, Segmentation fault.
#0  0x0000000000409e3c in ngx_vsnprintf (buf=0x7fff5291f12c "?*",
max=<value optimized out>, fmt=<value optimized out>,
    args=0x7fff5291f030) at src/core/ngx_string.c:426
426                         *--p = (u_char) (ui32 % 10 + '0');
(gdb) bt
#0  0x0000000000409e3c in ngx_vsnprintf (buf=0x7fff5291f12c "?*",
max=<value optimized out>, fmt=<value optimized out>,
    args=0x7fff5291f030) at src/core/ngx_string.c:426
#1  0x000000000040a219 in ngx_snprintf (buf=0x7fff5291f12c "?*",
max=140734578683891, fmt=0x2ff <Address 0x2ff out of bounds>)
    at src/core/ngx_string.c:100
#2  0x0000000000406353 in ngx_log_error_core (level=4, log=0x7d2f00,
err=0, fmt=0x45e090 "could not find named location \"%V\"")
    at src/core/ngx_log.c:98
#3  0x000000000042901b in ngx_http_named_location (r=0x700640,
name=0x671d40) at src/http/ngx_http_core_module.c:1934
#4  0x000000000042b560 in ngx_http_post_action (r=0x700640) at
src/http/ngx_http_request.c:2560
#5  0x000000000042cd35 in ngx_http_finalize_request (r=0x700640,
rc=500) at src/http/ngx_http_request.c:1706
#6  0x0000000000429028 in ngx_http_named_location (r=0x700640,
name=0x671d40) at src/http/ngx_http_core_module.c:1937
#7  0x000000000042b560 in ngx_http_post_action (r=0x700640) at
src/http/ngx_http_request.c:2560
#8  0x000000000042cd35 in ngx_http_finalize_request (r=0x700640,
rc=500) at src/http/ngx_http_request.c:1706
#9  0x0000000000429028 in ngx_http_named_location (r=0x700640,
name=0x671d40) at src/http/ngx_http_core_module.c:1937
#10 0x000000000042b560 in ngx_http_post_action (r=0x700640) at
src/http/ngx_http_request.c:2560
#11 0x000000000042cd35 in ngx_http_finalize_request (r=0x700640,
rc=500) at src/http/ngx_http_request.c:1706
#12 0x0000000000429028 in ngx_http_named_location (r=0x700640,
name=0x671d40) at src/http/ngx_http_core_module.c:1937
#13 0x000000000042b560 in ngx_http_post_action (r=0x700640) at
src/http/ngx_http_request.c:2560
#14 0x000000000042cd35 in ngx_http_finalize_request (r=0x700640,
rc=500) at src/http/ngx_http_request.c:1706
#15 0x0000000000429028 in ngx_http_named_location (r=0x700640,
name=0x671d40) at src/http/ngx_http_core_module.c:1937
#16 0x000000000042b560 in ngx_http_post_action (r=0x700640) at
src/http/ngx_http_request.c:2560
#17 0x000000000042cd35 in ngx_http_finalize_request (r=0x700640,
rc=500) at src/http/ngx_http_request.c:1706
#18 0x0000000000429028 in ngx_http_named_location (r=0x700640,
name=0x671d40) at src/http/ngx_http_core_module.c:1937
#19 0x000000000042b560 in ngx_http_post_action (r=0x700640) at
src/http/ngx_http_request.c:2560
.............
............тут очень много одинаковых блоков вызовов (злобная такая рекурсия)
............
#39500 0x000000000042cd35 in ngx_http_finalize_request (r=0x700640,
rc=500) at src/http/ngx_http_request.c:1706
#39501 0x0000000000429028 in ngx_http_named_location (r=0x700640,
name=0x671d40) at src/http/ngx_http_core_module.c:1937
#39502 0x000000000042b560 in ngx_http_post_action (r=0x700640) at
src/http/ngx_http_request.c:2560
#39503 0x000000000042cd35 in ngx_http_finalize_request (r=0x700640,
rc=500) at src/http/ngx_http_request.c:1706
---Type <return> to continue, or q <return> to quit---

Дальше мне надоело жать ентер :-)

Внимание, вопрос: что делать? :-(

-- 
Alexey Kovyrin
http://kovyrin.info/


 




Copyright © Lexa Software, 1996-2009.