Re: nginx застрял в sched_yield()
Igor Sysoev
igor на sysoev.ru
Чт Мар 31 19:09:23 MSD 2011
On Thu, Mar 31, 2011 at 06:57:57PM +0400, Denis F. Latypoff wrote:
> 31.03.2011, 18:53, "Igor Sysoev" <igor at sysoev.ru>:
> > On Thu, Mar 31, 2011 at 06:50:33PM +0400, Denis F. Latypoff wrote:
> >
> >> 31.03.2011, 18:46, "Igor Sysoev" <igor at sysoev.ru>;:
> >>> On Thu, Mar 31, 2011 at 06:00:02PM +0400, Denis F. Latypoff wrote:
> >>>> 31.03.2011, 16:30, "Maxim Dounin" <mdounin at mdounin.ru>;;:
> >>>>> Hello!
> >>>>>
> >>>>> On Thu, Mar 31, 2011 at 04:44:41AM +0400, Denis F. Latypoff wrote:
> >>>>>> Здрасьте, наконец-то отловил его, уже такое бывало, но
> >>>>>> на продакшене, по этому не получалось бэктрейс глянуть, надо было
> >>>>>> быстро все починить. Проявляется при HUP'е:
> >>>>>>
> >>>>>> (gdb) bt
> >>>>>> #0 0x0000003744abac77 in sched_yield () from /lib64/libc.so.6
> >>>>>> #1 0x0000000000413667 in ngx_spinlock (lock=0x2b1216ba3000, value=14637,
> >>>>>> spin=1024) at src/core/ngx_spinlock.c:39
> >>>>> fr 1
> >>>>> p ngx_ncpu
> >>>>> p *lock
> >>>>>
> >>>>> Последнее напечатает pid процесса, про него тоже желательно узнать
> >>>>> подробности.
> >>>> (gdb) fr 1
> >>>> #1 0x0000000000413667 in ngx_spinlock (lock=0x2b1216ba3000, value=14637,
> >>>> spin=1024) at src/core/ngx_spinlock.c:39
> >>>> 39 ngx_sched_yield();
> >>>> (gdb) p ngx_ncpu
> >>>> $3 = 1
> >>>> (gdb) fr 1
> >>>> #1 0x0000000000413667 in ngx_spinlock (lock=0x2b1216ba3000, value=14637,
> >>>> spin=1024) at src/core/ngx_spinlock.c:39
> >>>> 39 ngx_sched_yield();
> >>>> (gdb) p ngx_ncpu
> >>>> $4 = 1
> >>>> (gdb) p *lock
> >>>> $5 = 15792
> >>> А что показывает
> >>> ps ax -o pid,ppid,%cpu,vsz,wchan,command|egrep '(nginx|PID)'
> >> [root at gostats ~]# ps ax -o pid,ppid,%cpu,vsz,wchan,command|egrep '(nginx|PID)'
> >> PID PPID %CPU VSZ WCHAN COMMAND
> >> 14635 23330 0.0 166264 - nginx: worker process
> >> 14636 23330 0.0 166264 - nginx: worker process
> >> 14637 23330 12.7 153904 - nginx: cache manager process
> >> 23330 1 0.0 153904 rt_sig nginx: master process /opt/nginx/sbin/nginx
> >> 31627 9617 0.0 61180 pipe_w egrep (nginx|PID)
> >
> > То есть, процесса 15792 нет ?
> > А в error_log про него есть что-нибудь ?
>
> Что-то как-то совсем забыл про error.log:
>
> 2011/03/27 11:06:44 [notice] 23330#0: using inherited sockets from "12;"
> 2011/03/30 17:25:28 [alert] 14637#0: ignore long locked inactive cache entry ecf21fdcb63a82963655f68c517dd767, count:1
> 2011/03/30 17:25:28 [alert] 14637#0: ignore long locked inactive cache entry 218ad6b41b1522a6e4c679ec5bb00c02, count:1
> 2011/03/30 17:25:28 [alert] 23330#0: worker process 15792 exited on signal 11
>
> все, больше ничего нет
В общем, проблема в 15792, нужно сохранять корки.
--
Igor Sysoev
http://sysoev.ru/en/
Подробная информация о списке рассылки nginx-ru