Re: Тест nginx -- сколько сообщений в log syslog без потерь?

Илья Шипицин chipitsine на gmail.com
Пн Фев 5 21:10:02 UTC 2024


пн, 5 февр. 2024 г. в 20:57, Gena Makhomed <gmm на csdoc.com>:

> On 05.02.2024 15:21, Anatoliy Melnik via nginx-ru wrote:
> >> какую именно проблему Вы пытаетесь решить с помощью записи логов
> >> в unix socket, чтения данных из unix socket`а питоновским скриптом
> >> и потом записи данных этим питоновским скриптом в текстовой файл?
>
> > Если вы предлагаете писать напрямую с nginx-а в файл -- сделайте у себя
> ротацию файлов с интервалом 30 сек при 200-250 тыс подключений/сек...
> > Если у вас уже есть такое рабочее решение - поделитесь опытом, буду рад
> вас выслушать.
>
> Создание нормального рабочего решения должно начинаться
> с внимательного чтения документации и исходников nginx.
>
> Какую именно существующую проблему Вы пытаетесь решить
> с помощью ротации лог-файлов с интервалом в 30 секунд?
>
> > А на текущем отрезке времени:
> > Спасибо, я уже все решил :)
>
> Нет. Вы просто создали себе еще большую проблему на ровном месте.
>
> Потому что если программа, которая читает данные из unix socket`а
> отвалится - тогда произойдет переполенение буфера и nginx тогда
> заблокируется на операции записи в unix socket, и как следствие
> этого - перестанет выполнять свою основную функцию - перестанет
> отвечать на запросы клиентов по http / https протоколу.
>
> То есть, то что Вы сделали - это достаточно хрупкое
> и ненадежное "решение", особенно в условиях высоких нагрузок.
>
> Не всегда нужно все подряд писать в лог, например,
> можно ограничиться записью в лог только ответов с 4хх и 5хх статусами,
> в таком случае - не будет той проблемы, которую Вы пытаетесь
> решить таким способом с помощью unix-socket`а и python.
>
> Так же не понятно, в чем для Вас проблема переименовать
> log-файл и отправить сигнал USR1 мастер-процессу nginx,
> для того, чтобы он переоткрыл log-файл и продолжил запись.
>
> Особенно, если учесть, что директива https://nginx.org/r/access_log
> имеет дополнительные параметры [buffer=size] [flush=time] [if=condition]
>
> Вместо этого - какие-то жуткие костыли - то syslog, то unix socket и
> питоновские скрипты, читающие данные из этого unix-socket`а пишущие
> текстовые файлы, то еще что-то.
>
> Вы так и не ответили на мой вопрос, какую именно проблему
> Вы пытаетесь решить таким вот нетривиальным способом?
>

проблему трудоустройства )) ?


положа руку на сердце, с ротацией логов есть несколько, честно скажем,
решений, с которыми выглядит как компромисс

1) переменные (позволяющие создавать новый лог, скажем по map-у раз в 30
сек). вроде норм, но буферизации в этом случае не будет. но на nvme
возможно норм
2) copytruncate режим
3) описанный режим с USR1


>
> https://habr.com/ru/companies/dododev/articles/467047/
> Феномен XY: как избежать «неправильных» проблем
>
> --
> Best regards,
>   Gena
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru на nginx.org
> https://mailman.nginx.org/mailman/listinfo/nginx-ru
>
----------- следующая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20240205/4df9c47d/attachment-0001.htm>


Подробная информация о списке рассылки nginx-ru