Re: nginx не отвечает на запросы из VPN туннеля
Пардоньте, 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 не отвечает на запросы
Добрый день! Наша часть проблемы решилась, вчера закоммитили изменения в 11 и 10 ветки. У меня полет нормальный. Судя по СВНу в 11 релиз оно не вошло. /Алексей ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Nginx не отвечает на запросы
Да знаю я) но у меня даже /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 не отвечает на запросы
На трекере 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 не отвечает на запросы
Проблему зависания-то снимает, но похоже посетителю сайта всё равно при запросе выдаётся ошибка соединения с сервером, надо несколько раз обновить страницу, чтобы она заработала. 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 не отвечает на запросы
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 не отвечает на запросы
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 не отвечает на запросы
Добрый день! Фиксируем подобную же проблему. 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 не отвечает на запросы
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 не отвечает на запросы
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 не отвечает на запросы
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 не отвечает на запросы
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 не отвечает на запросы
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 не отвечает на запросы
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 не отвечает на запросы
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 не отвечает на запросы
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 не отвечает на запросы
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 не отвечает на запросы
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 не отвечает на запросы
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 не отвечает на запросы
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 не отвечает на запросы
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 не отвечает на запросы
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 не отвечает на запросы
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 не отвечает на запросы
Также непонятно куда пишется эта строка: 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 не отвечает на запросы
# 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 не отвечает на запросы
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 не отвечает на запросы
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 не отвечает на запросы
На 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 не отвечает на запросы
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 не отвечает на запросы
Отключил оба модуля сторонних - то же самое, виснет. 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 не отвечает на запросы
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