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

Gena Makhomed gmm на csdoc.com
Пн Фев 5 22:57:50 UTC 2024


On 05.02.2024 23:21, Evgeniy Berdnikov wrote:

>>> Если у вас уже есть такое рабочее решение - поделитесь опытом, буду рад вас выслушать.

>> Создание нормального рабочего решения должно начинаться
>> с внимательного чтения документации и исходников nginx.

>   Насчёт чтения исходников -- выглядит примерно таким же экстремизмом,
>   как требование знания ассемблера для прикладного программиста... :)

Слово "должно" здесь означает SHOULD а не MUST,
то есть - это рекомендация, а не требование.

Исходники - это тоже документация, причем максимально точно
и максимально подробно рассказывающая о поведении программы.

По крайней мере, это часто экономит время, если ответа нет
в документации - то мне обычно проще и быстрее посмотреть
в исходниках - документации №2, или провести эксперимент.

При чем тут ассемблер - не совсем понятно, nginx ведь на C написан,
как и большая часть операционной системы и всего системного софта.

>> Какую именно существующую проблему Вы пытаетесь решить
>> с помощью ротации лог-файлов с интервалом в 30 секунд?
> 
>   Товарищ отвечал на этот вопрос:
>   https://mailman.nginx.org/pipermail/nginx-ru/2024-January/MD45SEEP573DPPEQYAFT26MPMUK5646B.html

почему не подходит вариант делать ротацию логов с помощью USR1 ?

>> Потому что если программа, которая читает данные из unix socket`а
>> отвалится - тогда произойдет переполенение буфера и nginx тогда
>> заблокируется на операции записи в unix socket, и как следствие
>> этого - перестанет выполнять свою основную функцию - перестанет
>> отвечать на запросы клиентов по http / https протоколу.

>   Если так, и без вариантов, то это скорее недостаток nginx-а. Нужно делать
>   запись в сислог через неблокирующийся сокет, и дропать записи если
>   отправлять их не удаётся. Потому что в подавляющем большинстве случаев
>   факт работоспобности сервиса ВАЖНЕЕ правильности его работы и отсутствия
>   разных недостатков, вроде пропуска записей в логах. А ещё лучше дать юзеру
>   ручку, управляющую поведением программы при блокировке записи в лог.

Возможно, я что-то напутали и помню или старое поведение nginx,
или путаю сейчас nginx с другой программой, или вообще -
путаю unix socket`ы с пайпами.

Но текущее поведение nginx можно легко узнать с помощью эксперимента.
Мне обычных логов вполне хватает, поэтому записью логов nginx
в unix socket никогда не занимался.

> По мне так пример разумного подхода -- сквидовский logfile-daemon.

Сейчас логи каждый воркер пишет в файл напрямую, а если писать логи
через какой-то дополнительный процесс - это увеличит накладные расходы
на IPC и сложность, не принося при этом никакой пользы и ценности, IMHO.

-- 
Best regards,
  Gena



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