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