Maxim Dounin
February 08, 2011 10:16AM
Hello!

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

> 3 февраля 2011 г. 17:30 пользователь Maxim Dounin <mdounin@mdounin.ru>написал:
>
> Достаточно делать 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@nginx.org
http://nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

снова aio и утечка сокетов

n0guest February 03, 2011 07:38AM

Re: снова aio и утечка сокетов

Maxim Dounin February 03, 2011 09:32AM

Re: снова aio и утечка сокетов

n0guest February 08, 2011 09:14AM

Re: снова aio и утечка сокетов

Maxim Dounin February 08, 2011 10:16AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 142
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready