ПРОЕКТЫ 


  АРХИВ 


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: корка



Hello!

On Fri, Jan 13, 2012 at 02:44:05PM +0400, Domrachev Ivan wrote:

> >> вывалилась корка.
> >> дебаг логов нет, т.к. не знаю как воспроизвести.
> > А error_log'и есть?
> > grep -F '[alert]' /path/to/error/log
> 
> в этот день не было error_log'ов.
> 
> правда в конфиге:
> ....
> error_log error emerg;

Безумству храбрых поём мы песню...

> ....
> http {
> ...
>  error_log error crit;
> ...
> 
> >> #0  0x0000000000473c54 in ngx_http_file_cache_free (c=0x8014cb020, tf=0x0)
> >>     at src/http/ngx_http_file_cache.c:930
> >> 930             ngx_queue_remove(&fcn->queue);
> >> [New Thread 8014041c0 (LWP 100157)]
> >> (gdb) bt
> >> #0  0x0000000000473c54 in ngx_http_file_cache_free (c=0x8014cb020, tf=0x0)
> >>     at src/http/ngx_http_file_cache.c:930
> >> #1  0x000000000046892e in ngx_http_upstream_finalize_request 
> >> (r=0x801530600, u=0x801514a60, rc=-1)
> >>     at src/http/ngx_http_upstream.c:3014
> >> #2  0x000000000046be92 in ngx_http_upstream_process_header (r=0x801530600, 
> >> u=0x801514a60)
> >>     at src/http/ngx_http_upstream.c:2028
> >> #3  0x000000000046961a in ngx_http_upstream_handler (ev=0x8015d4ab0)
> >>     at src/http/ngx_http_upstream.c:917
> >> #4  0x000000000044a4d5 in ngx_kqueue_process_events (cycle=0x801443050, 
> >> timer=Variable "timer" is not available.
> >> )
> >>     at src/event/modules/ngx_kqueue_module.c:683
> 
> > [...]
> 
> >> из чужих модулей только nginx_upload_module-2.2.0.
> >> опции компиляции надо?
> >> саму корку+бинарник надо?
> >> конфиги надо?
> 
> > В "proxy_cache_path inactive=" стоит что?
> 
> proxy_cache_path /cache_path levels= keys_zone=d:50m inactive=10s;
> ...
> proxy_cache_valid 200 301 302 304 10s;

В 1.0.x сейчас так жить не будет, надо ставить inactive больше (а 
для контроля размера кеша использовать размер зоны и max_size).

Проблема в том, что по истечению inactive nginx пытается удалить 
элемент кеша, и если он вдруг заблокирован каким-то рабочим 
процессом - решает, что процесс, поставивший блокировку, умер, и 
всё равно удаляет (логгируя alert про это).  Поскольку элемент 
кеша вполне может быть заблокирован более чем на 10 секунд - в 
результате случается segmentation fault в процессе, который с этим 
элементом работал.

В 1.1.11 логика изменена (больше в таких случаях элементы не 
удаляются, просто пропускаются) и segmentation fault'ов быть не 
должно:

    *) Bugfix: a segmentation fault might occur in a worker process if small
       time was used in the "inactive" parameter of the "proxy_cache_path"
       directive.

Maxim Dounin

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


 




Copyright © Lexa Software, 1996-2009.