пн, 5 февр. 2024 г. в 20:57, Gena Makhomed <g...@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 >
_______________________________________________ nginx-ru mailing list nginx-ru@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-ru