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
|