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

Gena Makhomed gmm на csdoc.com
Пн Фев 5 19:56:54 UTC 2024


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`а пишущие
текстовые файлы, то еще что-то.

Вы так и не ответили на мой вопрос, какую именно проблему
Вы пытаетесь решить таким вот нетривиальным способом?

https://habr.com/ru/companies/dododev/articles/467047/
Феномен XY: как избежать «неправильных» проблем

-- 
Best regards,
  Gena



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