<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">вт, 13 февр. 2024 г. в 10:38, Anatoliy Melnik via nginx-ru <<a href="mailto:nginx-ru@nginx.org">nginx-ru@nginx.org</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)"><div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)"><div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)"><div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)"><div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)"><blockquote></blockquote>Gena Makhomed Wrote:<br>-------------------------------------------------------<br>> On 12.02.2024 12:30, Anatoliy Melnik via nginx-ru wrote:<br>> <br>> > Из его собщения от 5 февраля однозначно следует, что он<br>> > уже пытался настроить запись логов напрямую в файл но не смог<br>> > получить рабочего решения при 200-250 тысячах подключений в секунду<br>> > и необходимости делать ротацию лога каждые 30 секунд. И даже<br>> предлагает<br>> > мне самому попробовать и убедиться, что это не работает и что таким<br>> > образом запись и ротацию логов в файл самим nginx при такой большой<br>> > нагрузке и при таком интервале ротации - настроить невозможно,<br>> <br>> > Я предлагал попробовать и поделиться, лично я попробовал, получил<br>> результат -- пишет, работает, возможно. И сделал это ДО того, как сюда<br>> обратился...<br>> > НО меня сей результат не удовлетворил.<br>> <br>> Так и расскажите, почему не удовлетворил, поделитесь опытом<br>> с участниками и читателями этого списка рассылки. Тем более,<br>> что здесь присутствуют и разрабочики nginx, так что если проблема<br>> в коде nginx действителько существует - эту проблему в коде исправят.<br>> <br>> Насколько мне известно, переоткрытие лог-файлов по сигналу USR1<br>> происходит практически мгновенно и не требует перезапуска<br>> рабочих процессов nginx, поэтому - не может приводить ни к каким<br>> проблемам на любом количестве соединений при ротации лог-файлов<br>> nginx раз в 30 секунд.<br>> <br>> Тем более, что директива access_log позволяет настроить<br>> процесс записи логов наиболее оптимальным способом, ключив<br>> буферизацию, и при необходимости - компрессию логов на лету.<br>> <br>> access_log path [buffer=size] [gzip[=level] [flush=time]<br>> <br>> Поэтому - я просто не понимаю, какие у Вас могли там возникнуть<br>> проблемы, если делать ротацию логов nginx раз в 30 секунд на любом<br>> количестве подключений - от количества подключений это вообще никак<br>> не зависит, потому что новые рабочие процессы nginx при этом<br>> не создаются и страрые рабочие процессы nginx не завершаются.<br>> <br>> кстати, и logrotate делает ротацию логов nginx таким же способом:<br>> <br>> # cat /etc/logrotate.d/nginx<br>> <br>> if [ -f /var/run/nginx.pid ]; then<br>>          kill -USR1 `cat /var/run/nginx.pid`<br>> fi<br>> <br>> <br></div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)"><br></div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)">Для меня логи не цель, а средство.<br>Источник для необходимых статистических данных.<br></div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)">Чем не удовлетворил результат - смотрите чуть дальше.<br></div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)"><br></div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)">> > Да, да (понимаю) -- чем он меня "не удовлетворил"??<br>> > --- можете фантазировать сколько угодно.<br>> <br>> Могу, но не хочу. Поэтому и прошу Вас чтобы Вы сами рассказали всем<br>> здесь присутствующим о том, какие проблемы Вы обнаружили при ротации<br>> логов с помощью сигнала USR1. Я здесь не вижу вообще никаких проблем.<br>> <br></div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)">> > Задача по предотвращению исчерпания места на диске так же была<br>> решена задолго ДО обращения сюда.<br>> <br>> Поделитесь своим опытом решения этой задачи.<br>> Потому что я пока что не смог найти решения.<br>> <br></div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)"><br></div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)">Мы с вами решаем задачи при разных исходных условиях и разных конечных целях.<br>Еще и с разными ресурсами.<br>Для меня главный вопрос, на который надо дать ответ:<br></div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)">ЗАЧЕМ я пишу логи? ЧТО я дальше с ними буду делать?<br></div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)"><br></div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)"><br></div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)">> > Возникает впечатление, что кому-то из вас принципиально важно<br>> доказать незыблемую правоту своего мнения и ошибочность моих<br>> действий.<br>> > Вопрос - зачем?<br>> <br>> Я уже отвечал на этот Ваш вопрос.<br>> <br>> Этот список рассылки - он посвящен nginx, а не процессу<br>> самоутверждения.<br>> И если кто-то начинает ради самоутверждения распространять ложную<br>> информацию про nginx, например, что nginx не способен самостоятельно<br>> писать логи в файлы при количестве подключений 200-250 тысяч в<br>> секунду<br>> и ротации лог-файлов раз в 30 секунду и что решением этой проблемы<br>> является набор костылей в виде syslog, unix socket, и десяти<br>> одновременно запущеных копий скрипта на Python - то это FUD<br>> и это вредит не только конкретно тому человеку, который это<br>> делает, но и всему nginx community, то есть всем участниками<br>> и читателям списка рассылки, потому что часть неопытных пользователей<br>> nginx может в этот FUD поверить и считать эту Вашу информацию<br>> истинной.<br>> <br>> FUD - это<br>> <a href="https://en.wikipedia.org/wiki/Fear,_uncertainty,_and_doubt" target="_blank">https://en.wikipedia.org/wiki/Fear,_uncertainty,_and_doubt</a><br>> <a href="https://ru.wikipedia.org/wiki/FUD" target="_blank">https://ru.wikipedia.org/wiki/FUD</a><br>> <br>> > Это не конкурс или состязание, я сюда обратился за советом.<br>> <br>> Так я тоже обратился к Вам за советом - пожалуйста, поделитесь<br>> опытом,<br>> и расскажите, какие проблемы Вы обнаружили при ротации логов nginx<br>> с помощью сигнала USR1 что были вынуждены отказаться от этого<br>> варианта<br>> работы и логами и были вынуждены в результате соорудить то,<br>> что Вы назвали решением этой проблемы - в виде syslog, unix socket и <br>> скрипта на Python запускемого в 10 экземплярах и пишущего логи в 10 <br>> отдельных файлов.<br></div>> <br><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)">> Решением какой именно _проблемы_ является эта конструкция,<br>> которую Вы называете в своих сообщениях решением проблемы?<br>> <br></div>> > Какая разница насколько глубокое ущелье на моем пути, если я уже<div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)">> построил через него мост?<br>> > Может он не самый красивый, вечный, грузоподъемный и уникальный...<br>> > Для моих целей его достаточно :)<br>> > Возможно, по мнению кого-то, я вообще иду "не туда"!<br>> <br>> Дело тут не только и не столько в <a href="https://xkcd.ru/386/" target="_blank">https://xkcd.ru/386/</a><br>> потому что идя не туда, Вы еще этот способ идти не туда<br>> и рекламируете как _решение проблемы_, чем делаете FUD,<br>> хотя лично Вам этот веб-сервер ничего плохого не сделал.<br>> <br>> > И? Вы свои аргументы привели, мое мнение они не изменили...<br>> > Или для некоторых "есть только два мнения: моё и неправильное"?<br>> <br>> Поделитесь своим опытом, расскажите, почему эта конструкция<br>> из syslog, unix socket и десяти скриптов на python, пишущих<br>> сообщения в десять лог-файлов оказалась для Вас лучше,<br>> чем встроенные в nginx возможности для записи и ротации логов?<br>> </div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)">Повторюсь:</div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)">Логи - не цель, а всего лишь средство.<br></div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)"><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)"><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)"><br></div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)">Скрипт один, с модулем multiprocessing, так что экземпляров получается 11, но это не важно.<br>Запись в файлы были лишь эпизодом для выяснения ограничений связки nginx->(unixSocket)->syslog<br>Сейчас я вообще не пишу эти файлы, но при необходимости могу это начать делать так же на лету, не дергая ни nginx, ни сам сервис "типа персональный nginx-овый сислог".<br></div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)"><br>Все данные извлекаются в скрипте "на лету" и отображаются в соответствующих счетчиках.</div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)"><br>При необходимости сосчитать что-то другое/новое или по другом алгоритму - я всего лишь изменю несколько строк скрипта.<br></div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)">На данном этапе проверенная производительность одной системы 240тыс/сек, прогноз исходя из статистики нагрузки - 400-420.<br><br>Запись горы сообщений напрямую в файл из nginx-а работает, файлы ротируются, но мне это никак не помогает в решении поставленной задачи.<br>Поэтому и "не удовлетворил". <br><br></div></div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)">Собственно как следствие -- отсутствие проблемы доступного дискового пространства. Нагрузка на дисковую подсистему близка к нулю.<br></div></div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)"><br></div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)">И я с самого начала не говорил, что мне нужны файлы! Меня интересовала связка nginx->(unixSocket)->syslog.<br>Именно эту проблему я и озвучил.<br><br></div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)">Можно сослаться на мои посты:<br></div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)">"Сами файлы логов живут максимум 15-20 минут, этого достаточно для извлечения необходимых данных."<br>"Производительности хранилища точно достаточно для 150тыс/сек (один из способов замера -- запуск одновременно 3-х экземпляров rsyslog на одном физическом сервере и заливка в 3 сразу тестового набора в 12млн сообщений на каждый, итог 300-450тыс/сек в совокупности, непрерывно в течении нескольких часов заливка-ротация-удаление)"<br>"Данные почти равномерно расходятся по 10-ти файлам, которые пишутся на tmpfs в RAM. "<br><br>Это были лишь промежуточные этапы, мне нужно было убедиться, что проблема  именно на этапе nginx->(unixSocket)->syslog.<br>И запись в файл на очень быстрый носитель был, наверное, самый прямой путь, дающий адекватные результаты.<br></div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)">Свою функцию этот этап выполнил, но повторюсь - это не было целью!<br>И на каждом этапе обсуждения мне казалось очевидным: мне нужна рабочая связка nginx->(unixSocket)->syslog !!!</div></div></div></div></div></div></div></div></div></div></blockquote><div><br></div><div>я боюсь, сработал стереотип, который выглядит примерно так</div><div><br></div><div>"связка может быть рабочая или не рабочая в зависимости от, наверное, десятка параметров настройки операционной системы" ..... "поэтому логично для проверки сравнить количество патронов, вылетающих из точки А с прилетающими в точку Б" .... любым доступным автору способом, например, tcpdump (если топикстартеру удобно другое - без проблем)</div><div><br></div><div>и первая часть была опущена в силу предполагаемой очевидности. потому что никто не знает конкретную комбинацию параметров, и даже, если и знает, навряд ли сможет предложить способ вычисления, как из комбинации параметров получить булево "да, будет работать на рейте 200к" или "нет, не будет".</div><div><br></div><div>все таки любопытно. вот вас интересовал вопрос "рабочей связки".</div><div>в каком виде вы ожидаете помощь от комьюнити (с учетом, что никто не понимает, в чем именно у вас узкое место)</div><div><br></div><div>предположу, что эту ситуацию можно из "не работает" превратить в "работает, если".</div><div>если найти узкое место и устранить</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)"><div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)"><div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)"><div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)"><div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)"> <br></div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)"><br></div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)">Вот даже не знаю зачем тут все это излагаю...<br>Уже непререкаемая уверенность в собственной непогрешимости в некоторых постах должна была меня насторожить.<br>А уж выводы типа:<br>> И если кто-то начинает ради самоутверждения распространять ложную<br>> информацию про nginx, например, что nginx не способен самостоятельно<br>> писать логи в файлы при количестве подключений 200-250 тысяч в<br>> секунду...</div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)"><br></div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)">Буквально апогей!!!! Выршина дедукции!!! Шерлок Холмс не у вас, случайно, учился??<br><br></div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)">Чего уж там - давайте и углеродный след приплетем (нынче это модно).</div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)"><br></div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)"><br><br>> > Или я чего-то не понимаю?<br>> </div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)">> «Ничего личного, только бизнес».<br></div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)">Никогда не понимал восторгов этим правилом.<br>Из личного опыта -- стараюсь не иметь дел с адептами этого подхода, и это сугубо личное.<br><br></div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)">> <br>> Источник:<br>> <a href="https://uchet-jkh.ru/i/nicego-licnogo-tolko-biznes-otkuda-fraza" target="_blank">https://uchet-jkh.ru/i/nicego-licnogo-tolko-biznes-otkuda-fraza</a><br>> <br>> -- <br>> Best regards,<br>>   Gena<br>> <br>> _______________________________________________<br>> nginx-ru mailing list<br>> <a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a><br>> <a href="https://mailman.nginx.org/mailman/listinfo/nginx-ru" target="_blank">https://mailman.nginx.org/mailman/listinfo/nginx-ru</a></div><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;color:rgb(0,0,0)"><br>Best regards.....<br>to be continued ???<br><hr id="m_272725281838539558zwchr"><div><br><b></b></div></div></div></div></div></div></div></div><br></div></div></div>_______________________________________________<br>
nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a><br>
<a href="https://mailman.nginx.org/mailman/listinfo/nginx-ru" rel="noreferrer" target="_blank">https://mailman.nginx.org/mailman/listinfo/nginx-ru</a><br>
</blockquote></div></div>