Hello!
On Mon, Feb 05, 2024 at 09:56:54PM +0200, Gena Makhomed wrote:
[...]
> Потому что если программа, которая читает данные из unix socket`а
> отвалится - тогда произойдет переполенение буфера и nginx тогда
> заблокируется на операции записи в unix socket, и как следствие
> этого - перестанет выполнять свою основную функцию - перестанет
> отвечать на запросы клиентов по http / https протоколу.
Нет, если в сокет syslog'а не получается писать - nginx [логгирует
ошибку в error log и] дропает сообщение. Я об этом, собственно,
писал в начале треда - судя по всему, исходная проблема была
именно в том, что syslog-сервер не успевал выгребать сообщения, и
они осыпались на пол.
(А если вернуться к основам, то в syslog через стандартную
библиотеку nginx не пишет именно потому, что там запись в сокет в
случае чего блокируется, и так, конечно, жить нельзя.)
[...]
> Так же не понятно, в чем для Вас проблема переименовать
> log-файл и отправить сигнал USR1 мастер-процессу nginx,
> для того, чтобы он переоткрыл log-файл и продолжил запись.
>
> Особенно, если учесть, что директива https://nginx.org/r/access_log
> имеет дополнительные параметры [buffer=size] [flush=time] [if=condition]
+1
Нет никаких проблем вращать файловые логи в nginx'е, переоткрытие
логов по USR1 - дешёвая и быстрая операция.
При этом запись в файловые логи, во-первых, куда эффективнее
записи в syslog, в силу отсутствия лишних context switch'ей, а
во-вторых, позволяет дополнительно и существенно снизить затраты
за счёт буферизации и даже gzip-сжатия на лету.
Если на выходе всё равно файлы - совершенно непонятно, зачем
нужна вся эта запись в python-скрипты, изображающие из себя
syslog-сервера.
[...]
--
Maxim Dounin
http://mdounin.ru/
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
https://mailman.nginx.org/mailman/listinfo/nginx-ru