Hello! On Thu, Jan 18, 2024 at 07:15:10PM +0300, Anatoliy Melnik via nginx-ru wrote:
> Слив в 1 Syslog с 3-х nginx -ов, до суммарно 150тыс/сек все > сходится (3х50), расхождение +- 0.1% , на 200 тыс (3х67тыс) > расхождение достигает 4-7% (в syslog-е на 4-7% меньше, чем сумма > по бекэндам) Сравнивать с суммой по бэкендам как минимум некорректно без учёта возможной работы proxy_next_upstream и внутренних перенаправлений, не говоря уже о подзапросах. Если хочется сравнивать с бэкендами, то надо либо как-то убеждаться, что каждый запрос порождает только один запрос к бэкенду (proxy_next_upstream off, keepalive к бэкендам не используется, подзапросов нет), либо учитывать все попытки в $upstream_addr и $upstream_status (опять же в предположении отсутствия подзапросов). > Результат не зависит от использования UDP или unixSocket (на > локальном сервере). > Не зависит от того, локальный это syslog или на соседнем сервере > (для UDP). > > Ситуация повторяется как минимум на 2-х версиях nginx > nginx version: nginx/1.18.0 > И > nginx version: nginx/1.24.0 > > Замена syslog сервера на самописную версию, единственная задача > которой из unixSocket блок данных записать в файл дает такие же > результаты количественные. > > Возможно я плохо искал методы тюнинга unixSocket, к сожалению не > нашел. Тюнинг стандартный: setsockopt(SO_RCVBUF), как и для любых сокетов. Если в syslog-сервере ручки не вынесено, то в системе можно настроить с помощью соответствующих sysctl'ей - net.inet.udp.recvspace и net.local.dgram.recvspace для FreeBSD, net.core.rmem_default (а при необходимости net.ipv4.udp_mem и net.ipv4.udp_rmem_min) на Linux. Для локальных сокетов на Linux'е, судя по всему, нужно ещё крутить net.unix.max_dgram_qlen. -- Maxim Dounin http://mdounin.ru/ _______________________________________________ nginx-ru mailing list nginx-ru@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-ru