Проблемы...

Alexey N. Kovyrin alexey at kovyrin.net
Sun Feb 19 23:27:37 MSK 2006


Добрый день,

Вот столкнулся с непонятной мне проблемой... У меня есть некоторое 
количество самописных модулей к нгинксу, которые обеспечивают 
необходимую функциональность для моего фрихостинга... вроде бы все 
хорошо, но где-то есть утечка... как найти ее - я придумать так и не 
смог - все перепроверил, но ничего не нашел... Может у кого-нибудь есть 
мысли, как можно найти место, где "течет"? Насколько я понимаю, проблема 
у меня в коде "баннеровставлялки", но там вроде бы негде было ошибиться...

Некое подобие proof of concept этого модуля лежит в аттаче (вдруг 
поможет?)...

Еще одна проблема (не уверен, что не кореллирует с предыдущей): примерно 
раз в сутки рабочие процессы нгинкса падают в кору, запускаются новые, 
но нгинкс перестает отвечать на запросы... то есть accept происходит, но 
потом соединение просто висит до таймаута со стороны клиента...

Вот bt из коры:

#0  0x0804d0c6 in ngx_chain_update_chains (free=0xad32508, 
busy=0xad3250c, out=0xbffff9c8, tag=0x807f680) at src/core/ngx_buf.c:192
192             for (cl = *busy; cl->next; cl = cl->next) { /* void */ }
(gdb) bt
#0  0x0804d0c6 in ngx_chain_update_chains (free=0xad32508, 
busy=0xad3250c, out=0xbffff9c8, tag=0x807f680) at src/core/ngx_buf.c:192
#1  0x0804d4f5 in ngx_output_chain (ctx=0xad32500, in=0x0) at 
src/core/ngx_output_chain.c:219
#2  0x08065bcf in ngx_http_copy_filter (r=0xabdd308, in=0xad32508) at 
src/http/ngx_http_copy_filter_module.c:109
#3  0x0806eaee in ngx_http_range_body_filter (r=0xabdd308, in=0x0) at 
src/http/modules/ngx_http_range_filter_module.c:587
#4  0x0805eb23 in ngx_http_output_filter (r=0xabdd308, in=0xad32508) at 
src/http/ngx_http_core_module.c:972
#5  0x08063168 in ngx_http_writer (r=0xabdd308) at 
src/http/ngx_http_request.c:1638
#6  0x08062ccc in ngx_http_request_handler (ev=0x1120) at 
src/http/ngx_http_request.c:1391
#7  0x080558cc in ngx_event_process_posted (cycle=0x808d028, 
posted=0x80843b8) at src/event/ngx_event_posted.c:39
#8  0x0805484c in ngx_process_events_and_timers (cycle=0x808d028) at 
src/event/ngx_event.c:272
#9  0x0805a74d in ngx_worker_process_cycle (cycle=0x808d028, data=0x0) 
at src/os/unix/ngx_process_cycle.c:728
#10 0x08058c8f in ngx_spawn_process (cycle=0x808d028, proc=0x805a6d7 
<ngx_worker_process_cycle>, data=0x0, name=0x80785e7 "worker process", 
respawn=-3)
    at src/os/unix/ngx_process.c:187
#11 0x0805a0ed in ngx_start_worker_processes (cycle=0x808d028, n=4, 
type=-3) at src/os/unix/ngx_process_cycle.c:327
#12 0x08059d97 in ngx_master_process_cycle (cycle=0x808d028) at 
src/os/unix/ngx_process_cycle.c:219
#13 0x0804a5af in main (argc=134750176, argv=0xad32508) at 
src/core/nginx.c:302
(gdb)

Откуда начинать траблшутинг в этом случае я вообще не представляю... Не 
знаю, с чем связана такая проблема, но в логах тишина и ничего кроме 
следующего:

2006/02/19 00:27:38 [alert] 28963#0: worker process 12333 exited on 
signal 11 (core dumped)
2006/02/19 00:27:38 [alert] 28963#0: worker process 12335 exited on 
signal 11 (core dumped)
2006/02/19 00:27:39 [alert] 28963#0: worker process 12337 exited on 
signal 11 (core dumped)
2006/02/19 00:27:39 [alert] 28963#0: worker process 12334 exited on 
signal 11 (core dumped)
2006/02/19 00:30:04 [info] 12516#0: sigtimedwait() failed (4: 
Interrupted system call)
2006/02/19 00:30:04 [info] 12517#0: sigtimedwait() failed (4: 
Interrupted system call)
2006/02/19 00:30:04 [info] 12518#0: sigtimedwait() failed (4: 
Interrupted system call)
2006/02/19 00:30:04 [info] 12519#0: sigtimedwait() failed (4: 
Interrupted system call)
2006/02/19 00:40:04 [info] 12516#0: sigtimedwait() failed (4: 
Interrupted system call)
2006/02/19 00:40:04 [info] 12517#0: sigtimedwait() failed (4: 
Interrupted system call)
2006/02/19 00:40:04 [info] 12518#0: sigtimedwait() failed (4: 
Interrupted system call)
2006/02/19 00:40:04 [info] 12694#0: sigtimedwait() failed (4: 
Interrupted system call)
2006/02/19 00:40:04 [info] 12695#0: sigtimedwait() failed (4: 
Interrupted system call)
2006/02/19 00:40:04 [info] 12696#0: sigtimedwait() failed (4: 
Interrupted system call)
2006/02/19 00:40:04 [info] 12697#0: sigtimedwait() failed (4: 
Interrupted system call)
2006/02/19 00:50:04 [info] 18907#0: sigtimedwait() failed (4: 
Interrupted system call)
2006/02/19 00:50:04 [info] 18908#0: sigtimedwait() failed (4: 
Interrupted system call)
2006/02/19 00:50:04 [info] 18909#0: sigtimedwait() failed (4: 
Interrupted system call)
2006/02/19 00:50:04 [info] 18910#0: sigtimedwait() failed (4: 
Interrupted system call)

Такая периодичность сообщений связана с тем, что каждые 10 минут 
делается killall -HUP nginx (кстати, насколько это 
правильно/неправильно? может стоит дергать только тот процесс, pid 
которого есть в nginx.pid)?

Заранее прошу извинения за сумбурность изложения, просто приехал с 
отдыха и получил втык от начальства за даунтайм... и писал на волне 
переживаний...

-- 
/Scoundrel    [http://kovyrin.info]

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: ngx_http_banner_filter_module.c
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20060219/cdb5ef8f/attachment.c>


More information about the nginx-ru mailing list