On Thu, Jan 18, 2024 at 10:10:14PM +0300, Anatoliy Melnik via nginx-ru wrote:
> > Чем гадать, что "вероятнее всего", возьмите исходники nginx, вставьте
> > счётчик передач в syslog, смотрите его и сравнивайте с количеством пакетов,
> > пришедших в syslog. Так можно исключить потери в сети.
>
> Вроде при записи в unixSocket сеть отсутствует.
Это "внутренняя" сеть, только с address family = AF_UNIX, а не AF_INET.
И несколько другими алгоритмами, в частности, исключены потери пакетов
как для SOCK_STREAM, так и для SOCK_DGRAM. Что, конечно, не мешает
приложениям дропать пакеты при переполнениях ядерных буферов, приводящим
к ошибкам на уровне send(), как тут ведёт себя nginx -- не знаю.
Однако попытаться увеличить всякие буферы однозначно полезно.
> В любом варианте ваш совет трудно реализовать -- моя квалификация как программиста для подобной задачи не достаточна.
Тогда шансы достичь просветления уменьшаются. :) Ну, попробуйте просто
измерить пропускную способность syslog-ов каким-либо генератором записей,
например, сделайте файлик с 10К уникальных сообщений, подобных nginx,
и скармливайте его в цикле утилите logger. Посмотрите сколько запишется
на диск и с какой скоростью, не будет ли там пропусков.
Что касается использования памяти в сокетах, для линукса есть командочка
"ss -m", она покажет socket memory usage. Расшифровка выдачи в man ss,
посмотреть выдачу можно как по inet-сокетам, так и по unix-сокетам.
Для других ОС есть другие погремушки, наверное... Квалификация тут нужна
сисадминская, а не по части программирования, но по мне так правка кода
nginx проще.
> Пока создается впечатление, что либо у меня что-то не так, либо никому не приходило в голову сравнить эти данные.
Простой вопрос: зачем писать на диск 100 тыс/с логов, что потом с ними
предполагается делать? Ведь логи пишутся не просто так, а чтобы их потом
как-то обрабатывать... Что именно будет нужно из из этого океана байтов?
--
Eugene Berdnikov
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
https://mailman.nginx.org/mailman/listinfo/nginx-ru