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

Ответить