Re: nginx не отвечает на запросы из VPN туннеля

2017-05-01 Пенетрантность AlexSYSka
Пардоньте, HA-Proxy косячил запросы... удалите тему

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,274011,274015#msg-274015

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

Re: Nginx не отвечает на запросы

2016-10-11 Пенетрантность Alexey Kuznetsov

Добрый день!

Наша часть проблемы решилась, вчера закоммитили изменения в 11 и 10 
ветки. У меня полет нормальный.

Судя по СВНу в 11 релиз оно не вошло.

/Алексей

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

Re: Nginx не отвечает на запросы

2016-09-28 Пенетрантность Mikanoshi
Да знаю я) но у меня даже /usr/src пустая. Может вообще ту строку удалить
можно, подожду что они там решат.

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,269501,269927#msg-269927

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

Re: Nginx не отвечает на запросы

2016-09-28 Пенетрантность Alexey Kuznetsov



На трекере freebsd опубликовали патч. Посмотрите у себя, если есть 
возможность. Патч на 10=ку, возможно надо будет доработать напильником 
по месту для 11-й. Там в общем if добавляется. у меня 11-х нет и 
собирать стенд еще и на 11-ю ветку сейчас совсем нет возможности.


у меня работает с патчем.

https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=212920

/Алексей

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

Re: Nginx не отвечает на запросы

2016-09-28 Пенетрантность Mikanoshi
Проблему зависания-то снимает, но похоже посетителю сайта всё равно при
запросе выдаётся ошибка соединения с сервером, надо несколько раз обновить
страницу, чтобы она заработала.

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,269501,269890#msg-269890

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

Re: Nginx не отвечает на запросы

2016-09-27 Пенетрантность Alexey Kuznetsov

24.09.2016 11:41, Mikanoshi пишет:

Alexey Kuznetsov Wrote:
---

Помогает или откат кернела на старую версию (достаточно самого
ядра и модулей) ИЛИ выключение "accf_http" (и модуль не загружен и в
конфиге соотв выключено, отключать только в конфиге не пробовал).

Опция reset_timedout_connection включена? Если включить accf_http и
отключить её, то будет как у меня?
https://forum.nginx.org/read.php?21,269501,269715#msg-269715


Добрый день!

Да reset_timedout_connection включена, да ее выключение проблему 
снимает. Я локализовал ревизию в которой "сломалось", для 10-STABLE это 
r302995. Судя по всему на 11 это r261242 (но 11 у меня нет, соотв я не 
пробовал).
Я надеюсь Julien и Глеб смогут найти, что там так повлияло в тех 4-х 
измененных строках для 10, надеюсь оно будет починено и для 11 ветки.


/Алексей

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

Re: Re: Nginx не отвечает на запросы

2016-09-24 Пенетрантность Mikanoshi
Alexey Kuznetsov Wrote:
---
> Помогает или откат кернела на старую версию (достаточно самого 
> ядра и модулей) ИЛИ выключение "accf_http" (и модуль не загружен и в 
> конфиге соотв выключено, отключать только в конфиге не пробовал).

Опция reset_timedout_connection включена? Если включить accf_http и
отключить её, то будет как у меня?
https://forum.nginx.org/read.php?21,269501,269715#msg-269715

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,269501,269807#msg-269807

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

Re: Re: Nginx не отвечает на запросы

2016-09-23 Пенетрантность Alexey Kuznetsov

Добрый день!

Фиксируем подобную же проблему. FreeBSD 10.3 STABLE. В версии от конца 
мая все работало,  в версии собранной в конце августа уже нет, пробовал 
пересобрать вчера (обновив из svn), результат не меняется.. Бектрейс 
такой же. Помогает или откат кернела на старую версию (достаточно самого 
ядра и модулей) ИЛИ выключение "accf_http" (и модуль не загружен и в 
конфиге соотв выключено, отключать только в конфиге не пробовал). Без 
accf_http работает на любом из 3-х ядер на котором тестировалось. под 
небольшой нагрузкой не проявляется и с accf_http (есть где это работает 
с конца августа, но там от силы 1000 запросов в сутки). accf_datа не 
используется, соотв. и не загружен.


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=212920

нгинс из ports с дефолными настройками. Кернел - генерик.

/Алексей

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

Re: Nginx не отвечает на запросы

2016-09-22 Пенетрантность Maxim Dounin
Hello!

On Wed, Sep 21, 2016 at 03:41:35AM -0400, Mikanoshi wrote:

> Maxim Dounin Wrote:
> ---
> > Всмысле - как и ранее, после ручного массажирования зависшего 
> > процесса?
> > 
> > Попробуйте ещё выключить reset_timedout_connections, возможно 
> > умудрились сломать SO_LINGER.  Судя по стеку и каналу ожидания - 
> > ждёт оно как раз в части обработки SO_LINGER, тут:
> > 
> > http://fxr.watson.org/fxr/source/kern/uipc_socket.c?v=FREEBSD11#L871
> 
> Да, оживает от трейса.
> 
> Ещё часов 9 для уверенности должно пройти, но похоже отключение
> reset_timedout_connection помогло, пока ни одного зависшего процесса, вместо
> этого в логе ошибки:
> 
> 2016/09/21 00:48:27 [info] 60348#0: close() socket 44 failed (54: Connection
> reset by peer)
> 2016/09/21 01:02:57 [info] 60347#0: close() socket 54 failed (54: Connection
> reset by peer)
> 2016/09/21 03:51:18 [info] 60347#0: close() socket 48 failed (54: Connection
> reset by peer)
> 2016/09/21 05:13:45 [info] 60347#0: close() socket 54 failed (54: Connection
> reset by peer)
> 2016/09/21 07:29:33 [info] 60346#0: close() socket 47 failed (54: Connection
> reset by peer)
> 2016/09/21 10:13:40 [info] 60346#0: close() socket 46 failed (54: Connection
> reset by peer)

Ok, как уже было сказано ранее, это всё выглядит как ошибка во 
FreeBSD.  Будет здорово, если вы напише о проблеме во FreeBSD.

В частности, Глеб Смирнов готов заняться этим вопросом, ему можно 
написать по адресу Gleb Smirnoff .

-- 
Maxim Dounin
http://nginx.org/

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

Re: Nginx не отвечает на запросы

2016-09-21 Пенетрантность Mikanoshi
Maxim Dounin Wrote:
---
> Всмысле - как и ранее, после ручного массажирования зависшего 
> процесса?
> 
> Попробуйте ещё выключить reset_timedout_connections, возможно 
> умудрились сломать SO_LINGER.  Судя по стеку и каналу ожидания - 
> ждёт оно как раз в части обработки SO_LINGER, тут:
> 
> http://fxr.watson.org/fxr/source/kern/uipc_socket.c?v=FREEBSD11#L871

Да, оживает от трейса.

Ещё часов 9 для уверенности должно пройти, но похоже отключение
reset_timedout_connection помогло, пока ни одного зависшего процесса, вместо
этого в логе ошибки:

2016/09/21 00:48:27 [info] 60348#0: close() socket 44 failed (54: Connection
reset by peer)
2016/09/21 01:02:57 [info] 60347#0: close() socket 54 failed (54: Connection
reset by peer)
2016/09/21 03:51:18 [info] 60347#0: close() socket 48 failed (54: Connection
reset by peer)
2016/09/21 05:13:45 [info] 60347#0: close() socket 54 failed (54: Connection
reset by peer)
2016/09/21 07:29:33 [info] 60346#0: close() socket 47 failed (54: Connection
reset by peer)
2016/09/21 10:13:40 [info] 60346#0: close() socket 46 failed (54: Connection
reset by peer)

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,269501,269715#msg-269715

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

Re: Nginx не отвечает на запросы

2016-09-20 Пенетрантность Maxim Dounin
Hello!

On Mon, Sep 19, 2016 at 06:58:16PM -0400, Mikanoshi wrote:

> Maxim Dounin Wrote:
> ---
> > Всё это выглядит как ошибка ядра.  Во FreeBSD 11 был существенно 
> > переделан sendfile() в части работы с флагом SF_NODISKIO - 
> > возможно, имеет смысл попробовать выключить sendfile и/или aio.
> 
> Всё равно ошибка:
> 2016/09/20 03:48:14 [crit] 16449#0: close() socket 44 failed (9: Bad file
> descriptor)

Всмысле - как и ранее, после ручного массажирования зависшего 
процесса?

Попробуйте ещё выключить reset_timedout_connections, возможно 
умудрились сломать SO_LINGER.  Судя по стеку и каналу ожидания - 
ждёт оно как раз в части обработки SO_LINGER, тут:

http://fxr.watson.org/fxr/source/kern/uipc_socket.c?v=FREEBSD11#L871

-- 
Maxim Dounin
http://nginx.org/

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

Re: Nginx не отвечает на запросы

2016-09-20 Пенетрантность Evgeniy Berdnikov
On Mon, Sep 19, 2016 at 06:58:16PM -0400, Mikanoshi wrote:
> Maxim Dounin Wrote:
> ---
> > Всё это выглядит как ошибка ядра.  Во FreeBSD 11 был существенно 
> > переделан sendfile() в части работы с флагом SF_NODISKIO - 
> > возможно, имеет смысл попробовать выключить sendfile и/или aio.
> 
> Всё равно ошибка:
> 2016/09/20 03:48:14 [crit] 16449#0: close() socket 44 failed (9: Bad file
> descriptor)
> 2016/09/20 03:49:02 [info] 16449#0: kevent() failed (4: Interrupted system
> call)
> 
> 44 сокет не показывается в lsof на момент зависания.

 Значение errno=EBADF означает "сокет 44 не существует". После такой
 записи в лог номер 44 может получить сокет, открытый позже.
 Тогда новый сокет может попасть в выдачу lsof и быть ошибочно отождествлён
 с тем сокетом, который не удалось закрыть рабочему процессу.

> Cокеты эти для соединений используется:
> nginx 26627  www   44uIPv4 0xf800259514100t0
> TCP domain.ru:http->176-106-199-5.point.lviv.ua:28084 (ESTABLISHED)

 Здесь может быть повторное использование номера 44 для нового сокета.
-- 
 Eugene Berdnikov

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

Re: Nginx не отвечает на запросы

2016-09-19 Пенетрантность Mikanoshi
Maxim Dounin Wrote:
---
> Всё это выглядит как ошибка ядра.  Во FreeBSD 11 был существенно 
> переделан sendfile() в части работы с флагом SF_NODISKIO - 
> возможно, имеет смысл попробовать выключить sendfile и/или aio.

Всё равно ошибка:
2016/09/20 03:48:14 [crit] 16449#0: close() socket 44 failed (9: Bad file
descriptor)
2016/09/20 03:49:02 [info] 16449#0: kevent() failed (4: Interrupted system
call)

44 сокет не показывается в lsof на момент зависания.
Cокеты эти для соединений используется:
nginx 26627  www   44uIPv4 0xf800259514100t0
TCP domain.ru:http->176-106-199-5.point.lviv.ua:28084 (ESTABLISHED)

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,269501,269669#msg-269669

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

Re: Nginx не отвечает на запросы

2016-09-19 Пенетрантность Mikanoshi
Maxim Dounin Wrote:
---
> https://trac.nginx.org/nginx/ticket/147

Ясно, надо чаще читать /usr/ports/UPDATING :)

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,269501,269666#msg-269666

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

Re: Nginx не отвечает на запросы

2016-09-19 Пенетрантность Maxim Dounin
Hello!

On Mon, Sep 19, 2016 at 11:14:40AM -0400, Mikanoshi wrote:

> Evgeniy Berdnikov Wrote:
> ---
> 
> >  Я предлагал посмотреть, куда показывает файловый дескриптор (в трейсе
> >  он был с номером 37), а не какие дескрипторы открыты на
> > nginx-error.log.
> 
> # truss -s 1024 -p 15495
> close(49)ERR#9 'Bad file
> descriptor'
> write(36,"2016/09/19 18:16:03 [crit] 15495#0: close() socket 49 failed (9:
> Bad file descriptor)\n",86) = 86 (0x56)
> 
> lsof:
> nginx 15495  www   36wVREG   0,80  32017
>  722956 / (/dev/da0p2)
> 
> procstat:
> 15495 nginx   36 v r -wa-  14   32103 -   -
> 
> # find /var/log -inum 722956
> /var/log/nginx/error.log
> 
> И правда, лог там. Я не увидел, что такая папка есть, её же не должно быть,
> error_log у меня переопределён.

Ну т.е. у вас используется не та сборка, параметры которой вы 
приводили в исходном письме - видимо, вы обновились до свежей 
версии порта, а там изменены пути к логам по умолчанию.  Исходное 
же положение про "по умолчанию логгируется туда, куда показывает 
параметр configure --error-log-path" - по прежнему в силе.

> Если удалить, то nginx вообще не стартует, т.к. не может лог открыть.
> Перенос error_log из http в main даёт запустить, но всё равно:
> 
> nginx: [alert] could not open error log file: open()
> "/var/log/nginx/error.log" failed (2: No such file or directory)
> 
> Как полностью-то изменить путь?)

Пересобрать с другим параметром --error-log-path.  
Вкомпилированный error log всегда открывается для записи ошибок в 
процессе парсинга конфигурации, см. подробности тут:

https://trac.nginx.org/nginx/ticket/147

-- 
Maxim Dounin
http://nginx.org/

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

Re: Nginx не отвечает на запросы

2016-09-19 Пенетрантность Mikanoshi
Evgeniy Berdnikov Wrote:
---

>  Я предлагал посмотреть, куда показывает файловый дескриптор (в трейсе
>  он был с номером 37), а не какие дескрипторы открыты на
> nginx-error.log.

# truss -s 1024 -p 15495
close(49)ERR#9 'Bad file
descriptor'
write(36,"2016/09/19 18:16:03 [crit] 15495#0: close() socket 49 failed (9:
Bad file descriptor)\n",86) = 86 (0x56)

lsof:
nginx 15495  www   36wVREG   0,80  32017
 722956 / (/dev/da0p2)

procstat:
15495 nginx   36 v r -wa-  14   32103 -   -

# find /var/log -inum 722956
/var/log/nginx/error.log

И правда, лог там. Я не увидел, что такая папка есть, её же не должно быть,
error_log у меня переопределён.
Если удалить, то nginx вообще не стартует, т.к. не может лог открыть.
Перенос error_log из http в main даёт запустить, но всё равно:

nginx: [alert] could not open error log file: open()
"/var/log/nginx/error.log" failed (2: No such file or directory)

Как полностью-то изменить путь?)

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,269501,269664#msg-269664

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

Re: Nginx не отвечает на запросы

2016-09-19 Пенетрантность Mikanoshi
Evgeniy Berdnikov Wrote:
---
>  Ну и где же здесь сигнал nginx'у переоткрыть файл? Усиливается
>  подозрение в том, что лог пишется в уже удалённый файл.

Не надо переоткрывать)
rotate 2
copytruncate
notifempty
missingok

Точно не из-за ротации это, и 3МБ лог ошиок не был никогда.

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,269501,269661#msg-269661

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

Re: Nginx не отвечает на запросы

2016-09-19 Пенетрантность Evgeniy Berdnikov
On Mon, Sep 19, 2016 at 06:05:02AM -0400, Mikanoshi wrote:
> Evgeniy Berdnikov Wrote:
> ---
> > On Mon, Sep 19, 2016 at 04:03:36AM -0400, Mikanoshi wrote:
> > > Maxim Dounin Wrote:
> > > ---
> > > > Эта ошибка должна писаться в лог, настроенный на глобальном 
> > > > уровне.  Если вы его не настроили явно - будет использован лог, 
> > > > заданный в параметре сборки --error-log-path, в вашем случае - 
> > > > /var/log/nginx-error.log.
> > > 
> > > В том-то и дело, что лог задан
> > > error_log /var/log/nginx-error.log warn;
> > > но он абсолютно пустой.
> > 
> >  Ну так посмотрите, куда файловый дескриптор показывает. Не знаю как
> >  во freebsd, в линуксе это выглядит как "ls -l /proc//fd/".
> >  В линуксовом /proc//fdinfo/ лежит дополнительная информация.
> >  Есть lsof под множество платформ, наверное и под freebsd есть тоже.
> >  Возможно, запись идёт в удалённый (например, при неправильной
> >  ротации логов) файл.
> 
> # lsof | grep nginx-error.log

 Я предлагал посмотреть, куда показывает файловый дескриптор (в трейсе
 он был с номером 37), а не какие дескрипторы открыты на nginx-error.log.

> COMMAND PID USER   FD TYPE DEVICE   SIZE/OFF
>NODE NAME
> nginx 15491 root5wVREG   0,80  0
>  643535 /var/log/nginx-error.log
> nginx 15492  www5wVREG   0,80  0
>  643535 /var/log/nginx-error.log
[..skipped..]
> # cat /etc/newsyslog.conf | grep nginx
> 
> # cat /usr/local/etc/logrotate.conf | grep nginx-error -A 2
> /var/log/nginx-error.log {
> size 3M
> }

 Ну и где же здесь сигнал nginx'у переоткрыть файл? Усиливается
 подозрение в том, что лог пишется в уже удалённый файл.
-- 
 Eugene Berdnikov

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

Re: Nginx не отвечает на запросы

2016-09-19 Пенетрантность Mikanoshi
Evgeniy Berdnikov Wrote:
---
> On Mon, Sep 19, 2016 at 04:03:36AM -0400, Mikanoshi wrote:
> > Maxim Dounin Wrote:
> > ---
> > > Эта ошибка должна писаться в лог, настроенный на глобальном 
> > > уровне.  Если вы его не настроили явно - будет использован лог, 
> > > заданный в параметре сборки --error-log-path, в вашем случае - 
> > > /var/log/nginx-error.log.
> > 
> > В том-то и дело, что лог задан
> > error_log /var/log/nginx-error.log warn;
> > но он абсолютно пустой.
> 
>  Ну так посмотрите, куда файловый дескриптор показывает. Не знаю как
>  во freebsd, в линуксе это выглядит как "ls -l /proc//fd/".
>  В линуксовом /proc//fdinfo/ лежит дополнительная информация.
>  Есть lsof под множество платформ, наверное и под freebsd есть тоже.
>  Возможно, запись идёт в удалённый (например, при неправильной
>  ротации логов) файл.

# lsof | grep nginx-error.log
COMMAND PID USER   FD TYPE DEVICE   SIZE/OFF
   NODE NAME
nginx 15491 root5wVREG   0,80  0
 643535 /var/log/nginx-error.log
nginx 15492  www5wVREG   0,80  0
 643535 /var/log/nginx-error.log
nginx 15493  www5wVREG   0,80  0
 643535 /var/log/nginx-error.log
nginx 15494  www5wVREG   0,80  0
 643535 /var/log/nginx-error.log
nginx 15495  www5wVREG   0,80  0
 643535 /var/log/nginx-error.log
nginx 15496  www5wVREG   0,80  0
 643535 /var/log/nginx-error.log
nginx 15497  www5wVREG   0,80  0
 643535 /var/log/nginx-error.log

# fuser /var/log/nginx-error.log
/var/log/nginx-error.log: 15497wa 15496wa 15495wa 15494wa 15493wa 15492wa
15491wa

# procstat -f 15491 | grep nginx-error
PID COMMFD T V FLAGSREF  OFFSET PRO NAME
15491 nginx5 v r -wa-   7   0 -  
/var/log/nginx-error.log

# cat /etc/newsyslog.conf | grep nginx

# cat /usr/local/etc/logrotate.conf | grep nginx-error -A 2
/var/log/nginx-error.log {
size 3M
}

# ls -l /var/log/nginx-error.log
-rw-r--r--  1 root  wheel  0 19 сент. 14:48 /var/log/nginx-error.log

Nginx после каждого зависания перезапускаю, ротации ни разу не было.
Посмотрю ещё при след зависании дескрипторы.

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,269501,269658#msg-269658

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

Re: Nginx не отвечает на запросы

2016-09-19 Пенетрантность Evgeniy Berdnikov
On Mon, Sep 19, 2016 at 04:03:36AM -0400, Mikanoshi wrote:
> Maxim Dounin Wrote:
> ---
> > Эта ошибка должна писаться в лог, настроенный на глобальном 
> > уровне.  Если вы его не настроили явно - будет использован лог, 
> > заданный в параметре сборки --error-log-path, в вашем случае - 
> > /var/log/nginx-error.log.
> 
> В том-то и дело, что лог задан
> error_log /var/log/nginx-error.log warn;
> но он абсолютно пустой.

 Ну так посмотрите, куда файловый дескриптор показывает. Не знаю как
 во freebsd, в линуксе это выглядит как "ls -l /proc//fd/".
 В линуксовом /proc//fdinfo/ лежит дополнительная информация.
 Есть lsof под множество платформ, наверное и под freebsd есть тоже.
 Возможно, запись идёт в удалённый (например, при неправильной
 ротации логов) файл.
-- 
 Eugene Berdnikov

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

Re: Nginx не отвечает на запросы

2016-09-19 Пенетрантность Mikanoshi
Maxim Dounin Wrote:
---
> Эта ошибка должна писаться в лог, настроенный на глобальном 
> уровне.  Если вы его не настроили явно - будет использован лог, 
> заданный в параметре сборки --error-log-path, в вашем случае - 
> /var/log/nginx-error.log.

В том-то и дело, что лог задан
error_log /var/log/nginx-error.log warn;
но он абсолютно пустой.

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,269501,269654#msg-269654

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

Re: Nginx не отвечает на запросы

2016-09-18 Пенетрантность Maxim Dounin
Hello!

On Sun, Sep 18, 2016 at 03:34:42PM -0400, Mikanoshi wrote:

[...]

> # procstat -k $(pgrep nginx)
>   PIDTID COMM TDNAME   KSTACK
> 53141 101238 nginx-mi_switch
> sleepq_catch_signals sleepq_wait_sig _sleep kqueue_kevent kern_kevent
> sys_kevent amd64_syscall Xfast_syscall
> 53140 101281 nginx-mi_switch
> sleepq_catch_signals sleepq_wait_sig _sleep soclose _fdrop closef closefp
> amd64_syscall Xfast_syscall
> 53139 101117 nginx-mi_switch
> sleepq_catch_signals sleepq_wait_sig _sleep soclose _fdrop closef closefp
> amd64_syscall Xfast_syscall

[...]

> Как только я запускаю трейс для воркера, он сразу развисет и начинает
> работать! soclos меняется на kqread

Всё это выглядит как ошибка ядра.  Во FreeBSD 11 был существенно 
переделан sendfile() в части работы с флагом SF_NODISKIO - 
возможно, имеет смысл попробовать выключить sendfile и/или aio.

-- 
Maxim Dounin
http://nginx.org/

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

Re: Nginx не отвечает на запросы

2016-09-18 Пенетрантность Maxim Dounin
Hello!

On Sun, Sep 18, 2016 at 06:28:00PM -0400, Mikanoshi wrote:

> Также непонятно куда пишется эта строка:
> 
> close(48)ERR#9 'Bad file
> descriptor'
> write(37,"2016/09/19 02:52:14 [crit] 14580#0: close() socket 48 failed (9:
> Bad file descriptor)\n",86) = 86 (0x56)
> 
> Ни в одном логе её нет, error_log у меня на уровнях http, server и /dev/null
> в некоторых location, но их я заменил на один файл и там тоже этой ошибки
> нет.

Эта ошибка должна писаться в лог, настроенный на глобальном 
уровне.  Если вы его не настроили явно - будет использован лог, 
заданный в параметре сборки --error-log-path, в вашем случае - 
/var/log/nginx-error.log.

-- 
Maxim Dounin
http://nginx.org/

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

Re: Nginx не отвечает на запросы

2016-09-18 Пенетрантность Mikanoshi
Также непонятно куда пишется эта строка:

close(48)ERR#9 'Bad file
descriptor'
write(37,"2016/09/19 02:52:14 [crit] 14580#0: close() socket 48 failed (9:
Bad file descriptor)\n",86) = 86 (0x56)

Ни в одном логе её нет, error_log у меня на уровнях http, server и /dev/null
в некоторых location, но их я заменил на один файл и там тоже этой ошибки
нет.

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,269501,269651#msg-269651

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

Re: Nginx не отвечает на запросы

2016-09-18 Пенетрантность Mikanoshi
# ps axuww | grepc nginx
root 53135   0.0  0.4   68624  11676  -  Is   14:32   0:00.00 nginx:
master process /usr/local/sbin/nginx
www  53136   0.0  0.4   70672  13320  -  I14:32   0:23.31 nginx:
worker process (nginx)
www  53137   0.0  0.4   70672  12060  -  I14:32   0:12.39 nginx:
worker process (nginx)
www  53138   0.0  0.4   68624  12936  -  I14:32   0:27.34 nginx:
worker process (nginx)
www  53139   0.0  0.4   70672  12488  -  I14:32   0:23.35 nginx:
worker process (nginx)
www  53140   0.0  0.4   72720  12528  -  I14:32   0:11.48 nginx:
worker process (nginx)
www  53141   0.0  0.3   66576  10580  -  S14:32   0:22.22 nginx:
cache manager process (nginx)

# psext | grep nginx
  80 www80 www  53141   normal  20  20  0  10580 kqread 
0:13.99  0:08.23 nginx: cache manager process (nginx)
   0 root0 wheel53135   normal  20  20  0  11676 pause  
0:00.00  0:00.00 nginx: master process /usr/local/sbin/nginx
  80 www80 www  53136   normal  20  20  0  13320 soclos 
0:13.45  0:09.88 nginx: worker process (nginx)
  80 www80 www  53137   normal  20  20  0  12060 soclos 
0:05.10  0:07.34 nginx: worker process (nginx)
  80 www80 www  53138   normal  20  20  0  12936 soclos 
0:08.14  0:19.20 nginx: worker process (nginx)
  80 www80 www  53139   normal  20  20  0  12488 soclos 
0:08.21  0:15.14 nginx: worker process (nginx)
  80 www80 www  53140   normal  20  20  0  12528 soclos 
0:05.88  0:05.60 nginx: worker process (nginx)

# procstat -k $(pgrep nginx)
  PIDTID COMM TDNAME   KSTACK
53141 101238 nginx-mi_switch
sleepq_catch_signals sleepq_wait_sig _sleep kqueue_kevent kern_kevent
sys_kevent amd64_syscall Xfast_syscall
53140 101281 nginx-mi_switch
sleepq_catch_signals sleepq_wait_sig _sleep soclose _fdrop closef closefp
amd64_syscall Xfast_syscall
53139 101117 nginx-mi_switch
sleepq_catch_signals sleepq_wait_sig _sleep soclose _fdrop closef closefp
amd64_syscall Xfast_syscall
53138 101095 nginx-mi_switch
sleepq_catch_signals sleepq_wait_sig _sleep soclose _fdrop closef closefp
amd64_syscall Xfast_syscall
53137 101200 nginx-mi_switch
sleepq_catch_signals sleepq_wait_sig _sleep soclose _fdrop closef closefp
amd64_syscall Xfast_syscall
53136 100605 nginx-mi_switch
sleepq_catch_signals sleepq_wait_sig _sleep soclose _fdrop closef closefp
amd64_syscall Xfast_syscall
53135 101161 nginx-mi_switch
sleepq_catch_signals sleepq_wait_sig _sleep kern_sigsuspend sys_sigsuspend
amd64_syscall Xfast_syscall

Как только я запускаю трейс для воркера, он сразу развисет и начинает
работать! soclos меняется на kqread

# truss -p 53138
close(47)ERR#9 'Bad file
descriptor'
write(36,"2016/09/18 05:11:44 [crit] 53138"...,86) = 86 (0x56)
kevent(46,{ },0,{ 0,EVFILT_TIMER,EV_CLEAR,0x0,0x371a2,0x0
45,EVFILT_READ,0x0,0x0,0x40,0x802a0d960 },512,0x0) = 2 (0x2)
gettimeofday({ 1474180074.654655 },0x0)  = 0 (0x0)
recvmsg(0x2d,0x7fffe770,0x0) = 32 (0x20)
close(3) = 0 (0x0)
recvmsg(0x2d,0x7fffe770,0x0) = 32 (0x20)
recvmsg(0x2d,0x7fffe770,0x0) ERR#35 'Resource
temporarily unavailable'
write(35,"212.109.218.47 - - [18/Sep/2016:"...,151) = 151 (0x97)
write(7,"181.208.179.6 - - [18/Sep/2016:0"...,157) = 157 (0x9d)
kevent(46,{ },0,{ 0,EVFILT_TIMER,EV_CLEAR,0x0,0x1,0x0 },512,0x0) = 1 (0x1)
gettimeofday({ 1474180074.674655 },0x0)  = 0 (0x0)
kevent(46,{ },0,{ 0,EVFILT_TIMER,EV_CLEAR,0x0,0x1,0x0 },512,0x0) = 1 (0x1)
gettimeofday({ 1474180074.809470 },0x0)  = 0 (0x0)
kevent(46,{ },0,{ 0,EVFILT_TIMER,EV_CLEAR,0x0,0x1,0x0 },512,0x0) = 1 (0x1)
gettimeofday({ 1474180074.873733 },0x0)  = 0 (0x0)
...

То же самое с gdb:

(gdb) attach 53141
...
(gdb) bt
#0  0x0008017db778 in _close () from /lib/libc.so.7
#1  0x000801a41295 in pthread_suspend_all_np () from /lib/libthr.so.3
#2  0x0042561c in ngx_close_connection ()
#3  0x0044f7ce in ngx_http_process_request_uri ()
#4  0x00433fd0 in ngx_event_expire_timers ()
#5  0x00433796 in ngx_process_events_and_timers ()
#6  0x0043a9d8 in ngx_single_process_cycle ()
#7  0x00439096 in ngx_spawn_process ()
#8  0x0043a289 in ngx_master_process_cycle ()
#9  0x00439a55 in ngx_master_process_cycle ()
#10 0x00413244 in main ()

(gdb) bt
#0  0x0008017c398a in _kevent () from /lib/libc.so.7
#1  0x000801a41b82 in pthread_suspend_all_np () from /lib/libthr.so.3
#2  0x0043c185 in ngx_freebsd_sendfile_chain ()
#3  0x00433764 in ngx_process_events_and_timers ()
#4  0x000

Re: Nginx не отвечает на запросы

2016-09-16 Пенетрантность Anton Yuzhaninov

On 2016-09-13 04:00, Mikanoshi wrote:

FreeBSD 11.0-RC2 r...@releng2.nyi.freebsd.org:/usr/obj/usr/src/sys/GENERIC
amd64

Стабильно пару раз в сутки Nginx перестаёт отвечать на запросы, а все
поступающие запросы висят бесконечно, в итоге копятся тысячи подключений.
Нагрузки на сервер при этом почти нет.


Когда зависнет посмотрите
procstat -k PID
для зависших процессов.

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

Re: Nginx не отвечает на запросы

2016-09-16 Пенетрантность Maxim Dounin
Hello!

On Fri, Sep 16, 2016 at 01:54:00AM -0400, Mikanoshi wrote:

> Отключил оба модуля сторонних - то же самое, виснет.

У вас в опциях сборки:

-add-module=/usr/ports/www/nginx-devel/work/ngx_cache_purge-2.3 
--add-dynamic-module=/usr/ports/www/nginx-devel/work/headers-more-nginx-module-f5559ec
 
--add-module=/usr/ports/www/nginx-devel/work/ngx-fancyindex-0.3.6 
--add-module=/usr/ports/www/nginx-devel/work/nginx-upload-progress-module-0.9.0 
--add-module=/usr/ports/www/nginx-devel/work/ngx_devel_kit-0.3.0 
--add-module=/usr/ports/www/nginx-devel/work/redis2-nginx-module-0.12 
--add-module=/usr/ports/www/nginx-devel/work/iconv-nginx-module-0.14

Т.е. минимум 9 сторонних модулей в сборке.  Слова про "отключил 
оба" позволяют предположить, что актуальная рекомендация всё та 
же: убрать из сборки (и из конфига) все сторонние модули и 
попробовать воспроизвести проблему без них.  На FreeBSD это 
тривиально: зайти в настройки порта и снять отметки со всех 
модулей, помеченных как 3rd party.

-- 
Maxim Dounin
http://nginx.org/

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

Re: Nginx не отвечает на запросы

2016-09-16 Пенетрантность Mikanoshi
На FreeBSD x64 strace нет и не поставить, truss я так полагаю вместо него?
Не пользовался ей, попробую.

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,269501,269610#msg-269610

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

Re: Nginx не отвечает на запросы

2016-09-16 Пенетрантность Evgeniy Berdnikov
On Fri, Sep 16, 2016 at 01:54:00AM -0400, Mikanoshi wrote:
> Отключил оба модуля сторонних - то же самое, виснет.

 На каком сисколе висит? Снимите strace, покажите стэк вызовов.
-- 
 Eugene Berdnikov

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

Re: Nginx не отвечает на запросы

2016-09-15 Пенетрантность Mikanoshi
Отключил оба модуля сторонних - то же самое, виснет.

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,269501,269606#msg-269606

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

Re: Nginx не отвечает на запросы

2016-09-13 Пенетрантность Maxim Dounin
Hello!

On Tue, Sep 13, 2016 at 04:00:13AM -0400, Mikanoshi wrote:

> Nginx 1.11.3
> FreeBSD 11.0-RC2 r...@releng2.nyi.freebsd.org:/usr/obj/usr/src/sys/GENERIC 
> amd64
> 
> Стабильно пару раз в сутки Nginx перестаёт отвечать на запросы, а все
> поступающие запросы висят бесконечно, в итоге копятся тысячи подключений.
> Нагрузки на сервер при этом почти нет.
> Апач в это время за ним работает прекрасно, да и всё остальное связанное с
> сетью тоже.
> Добавил мониторинг 80 порта и перезапуск Nginx, только это помогает.
> Ни в одном логе и намёка нет на ошибки, в логи запросов просто ничего не
> пишется до перезапуска, общий debug лог пустой.
> Всё из sysctl.conf и loader.conf я убрал (кроме accf_data_load и
> accf_http_load), но всё равно виснет, так что проблема не в твиках там.
> Сейчас ещё отключил Jumbo Packets, т.к. на FreeBSD 9.2 они не были включены,
> а этот же конфиг работал нормально.

Я бы рекомендовал начать с простого: убрать из сборки (и из 
конфига) все сторонние модули и попробовать воспроизвести проблему 
без них.

-- 
Maxim Dounin
http://nginx.org/

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