On Tue, Sep 12, 2023 at 05:40:36PM +0700, Andrey Lu wrote:
> 07.09.2023 15:09, Eugene Berdnikov пишет:
[...]
> >   что называется, понесло... А раньше syslog-ng иногда подвисал из-за
> >   какой-то баги. При этом он переставал принимать пакеты, и подвисала
> >   практически вся система, ибо в юниксах код syslog(3) традиционно
> >   блокирующийся, и в линуксе GNU libc, там так же. Я даже собрал все
> >   материалы для багрепорта, но времени оформить его не хватило, пришлось
[...]
> Можно поподробнее про syslog-ng ? используем syslog-ng на большом количестве
> серверов со стретча до булзая, в разных позах - никаких проблем не замечали

 Нашёл файлики от июля 2019, созданные когда я готовил багрепорт.
 В них видно, что syslog-ng стопорится на операции записи

send(32, "<39>Jul 20 07:49:29 syslog-ng: DIGEST-MD5 common mech free", 58, 
MSG_NOSIGNAL

 a lsof в этот замечательный момент показывает

COMMAND     PID   TID TASKCMD          USER   FD      TYPE             DEVICE 
SIZE/OFF       NODE NAME
syslog-ng 18274                        root   32u     unix 0x00000000c94137a7   
   0t0    5922798 type=DGRAM

 Т.е. syslog-ng пытается писать в сокет, клонированный accept()ом
 от /dev/log. Но с обратной стороны никто не собирается читать, там
 сидит чукча-писатель с syslog(3). А поскольку send() с MSG_NOSIGNAL,
 и, ясный пень, без таймера, то наступает капец. Ни по ssh зайти
 на эту машину, ни с консоли, поскольку и sshd, и getty->login вызывают
 синхронный syslog(3), на котором точно так же виснут.

 Бага проявлялась редко, но на физических хостах она отличалась особой
 неприятностью. И неуловимостью. А в контейнере поймалась на ура.
 Возможно, это уже починили, всё-таки 4 года прошло.
-- 
 Eugene Berdnikov

Ответить