ПРОЕКТЫ 


  АРХИВ 


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: снова aio и утечка сокето в



Hello!

On Tue, Feb 08, 2011 at 05:12:27PM +0300, Костенко Евгений wrote:

> 3 февраля 2011 г. 17:30 пользователь Maxim Dounin <mdounin@xxxxxxxxxx>написал:
> 
> Достаточно делать reload, без потери запросов.
> >
> 
> # netstat -an | grep CLOSED | wc -l
> 3056
> 
> делаем reload - цифра та же, делаем restart
>
> #netstat -an | grep CLOSED | wc -l
> 1
> 
> Видимо в моем случае reload не помогает.

Очевидно - после reload'а старые рабочие процессы выходят не 
сразу, а когда доработают все активные запросы (не останется 
взведённых таймеров, если быть точным).  

Теоретически - это может занимать неопределённо долгое время, если 
вы скажем /dev/random раздаёте, и есть клиенты, это качающие.  На 
практике обычно несколько минут, если есть раздача больших файлов 
- то до нескольких часов.

Так что вы уж определитесь - или сразу, или без потери запросов.

> > BTW, в логах должны быть полезные alert'ы: как минимум при
> > заверешении рабочего процесса, как максимум - в конкретном
> > запросе.
> >
> 
> индивидуально per-vhosts подобных жалоб в error_log нет.
> в глобальном error_log иногда всплывают следующие строчки
> 
> 2011/02/AA 13:19:09 [alert] 23804#0: open socket #XXX left in connection ZZZ

Других alert'ов при этом не наблюдается?

> > PS: Натягивать на 0.8.54 патчи Максима (Maxim Dounin) не стал, т.к. судя
> > по
> > > changlelog'у они уже приняты в 0.8.53. Или не все?
> >
> > Не все.  Нужны ещё:
> >
> > http://nginx.org/pipermail/nginx-devel/2010-October/000500.html
> > http://nginx.org/pipermail/nginx-devel/2010-October/000497.html
> >
> > К утечке сокетов может приводить отсутствие последнего патча, но
> > только при использовании aio sendfile и limit_rate.
> >
> 
> aio используется только как on, ибо с "aio sendfile" поверх zfs не бегает
> толком.
> а limite_rate в конфигах вообще нигде не используется.
> 
> в таких условиях есть смысл накатывать указанные выше патчи?

Утечек сокетов из-за их отсутствия быть не должно.  Хотя я бы 
рекомендовал тем не менее накатить.

Впрочем, если используется ZFS - не исключено, что проблема вообще 
не в nginx'е.

> > Кроме того, это могут быть какие-то другие проблемы с aio (e.g.
> > при использовании aio в кеше).  В этом случае надо делать как
> > описано тут:
> >
> > http://wiki.nginx.org/Debugging#Socket_leaks
> >
> > Ну или если gdb пугает - для начала поиграться с включённостью aio
> > для конкретных location'ов, и посмотреть на результат (i.e.
> > определить где конкретно течёт).
> >
> 
> под фразой "aio в кеше" подразумевается proxy_cache?
> за ссылку спасибо, попробую в ближайшее время.

Да.

> я так понимаю для локализации "проблемы" надо пересобрать с --with-debug и
> вытащить полный backtrace из core-файла?

Backtrace бесполезен, он будет вести на сооветствующую проверку 
при завершении рабочего процесса.  Нужно смотреть в логи на 
предмет alert'ов, и лезть в структуры за информацией.  По ссылке 
всё расписано.

Maxim Dounin

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


 




Copyright © Lexa Software, 1996-2009.