И снова Здравствуйте :) Итак конечный вариант решения:
В конфиге nginx вот такая конструкция map "$remote_port" $log_selector_0 { default 0; ~0$ 1; } map "$remote_port" $log_selector_1 { default 0; ~1$ 1; } map "$remote_port" $log_selector_2 { default 0; ~2$ 1; } map "$remote_port" $log_selector_3 { default 0; ~3$ 1; } map "$remote_port" $log_selector_4 { default 0; ~4$ 1; } map "$remote_port" $log_selector_5 { default 0; ~5$ 1; } map "$remote_port" $log_selector_6 { default 0; ~6$ 1; } map "$remote_port" $log_selector_7 { default 0; ~7$ 1; } map "$remote_port" $log_selector_8 { default 0; ~8$ 1; } map "$remote_port" $log_selector_9 { default 0; ~9$ 1; } ..... access_log syslog:server=unix:/run/socket-00,nohostname,facility=local5,severity=info,tag=nginxStats01 st01 if=$log_selector_0; access_log syslog:server=unix:/run/socket-01,nohostname,facility=local5,severity= info ,tag=nginxStats01 st01 if=$log_selector_1; access_log syslog:server=unix:/run/socket-02,nohostname,facility=local5,severity= info ,tag=nginxStats01 st01 if=$log_selector_2; access_log syslog:server=unix:/run/socket-03,nohostname,facility=local5,severity= info ,tag=nginxStats01 st01 if=$log_selector_3; access_log syslog:server=unix:/run/socket-04,nohostname,facility=local5,severity= info ,tag=nginxStats01 st01 if=$log_selector_4; access_log syslog:server=unix:/run/socket-05,nohostname,facility=local5,severity=info,tag=nginxStats01 st01 if=$log_selector_5; access_log syslog:server=unix:/run/socket-06,nohostname,facility=local5,severity= info ,tag=nginxStats01 st01 if=$log_selector_6; access_log syslog:server=unix:/run/socket-07,nohostname,facility=local5,severity= info ,tag=nginxStats01 st01 if=$log_selector_7; access_log syslog:server=unix:/run/socket-08,nohostname,facility=local5,severity= info ,tag=nginxStats01 st01 if=$log_selector_8; access_log syslog:server=unix:/run/socket-09,nohostname,facility=local5,severity= info ,tag=nginxStats01 st01 if=$log_selector_9; Данные почти равномерно расходятся по 10-ти файлам, которые пишутся на tmpfs в RAM. Отказался и от rsyslog и от syslog-ng В качестве принимающей стороны выступает пока python скрипт В нем стартую 10 процессов, каждый слушает свой сокет и вся его задача -- сложить в файл данные. Отказ от rsyslog-а обусловлен просто огромным количеством переключений контекста, rsyslog-ом генерируемое. Уже на 200-210тыс/сек их количество переваливает за 1.4 млн/сек. ( примерно 0.9млн - работа rsyslog-а) и на этой отметке сильно деградирует производительность системы в целом. syslog-ng при работе с unixSocket показал довольно низкую производительность. (Долго с ним не разбирался. Чисто дефолтная установка и минимальная настройка). python по сравнению с rsyslog ЦПУ потребляет немного больше, но переключений контекста значительно меньше, и это положительно сказывается на работе всей системы. Как итог -- проверен порог в 220-230 тыс/сек (такая нагрузка сохранялась около 3-х часов) на 1 nginx, на моем железе все отработало нормально, все метрики сошлись. Попытка с UDP -- больше потребление CPU, больше прерываний, больше переключений контекста... И если 220-230 тыс/сек на 10 unixSocket -еще не предел для моего железа, то те же 220-230 тыс/сек на udp на loopback интерфейс практически предел судя по мониторингу. Всем еще раз спасибо за внимание и советы.
_______________________________________________ nginx-ru mailing list nginx-ru@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-ru