Здравствуйте.
Всем спасибо за советы, постараюсь свести их в некую систему и поэтапно 
применить, чтоб понять что и какой эффект даст в результате.

Попробую подвести итоги по теме:
На вопрос 
"До примерно 50 тыс/сек сообщений статистика прокси и бекэндов сходится, а вот 
начиная примерно с 50тыс/сек начинаются расхождения.... 
Кто-то с таким сталкивался? "
Я ожидал ответов в стиле 
"У меня на сервере при нагрузке 70 (80, 90 и т.д.) тыс/сек ничего подобного не 
наблюдается (или наблюдается что-то подобное)" 
Или что-то близкое по смыслу.
Судя по содержанию данных советов:
Подобную статистику не ведут, т.к. не видят особого смысла.

Зачем мне это нужно:
Есть 3 реверс-прокси, и от 15 до 30 беков, на которые и проксируются запросы.
Обращения жестко делятся на несколько типов, тип определяется значением 
переменной в запросе, запросы БЕЗ этой переменной игнорируются.
Беки ведут статистику сколько и какого типа запросов они получили, эти данные 
сливаются в БД и хранятся с дискретностью 20минут.

Регулярно требуется "нестандартная" статистика, например 
"средний размер ($body_bytes_sent) по запросам типа "sc012" за сутки"
"соотношение обращений по http и https ($schema) по запросам типа "q1wr" за час"
"наименьшее/среднее/наибольшее время ($request_time) по запросам типа "sc012" 
за..."
"объем запросов типа "q1wr" (сумма $body_bytes_sent таких запросов) в общем 
объеме трафика (сумма $body_bytes_sent всех запросов)"
и т.д.
нет смысла каждый раз перекраивать ПО на беках, ведь все это есть в логах 
реверс-прокси.
Сами файлы логов живут максимум 15-20 минут, этого достаточно для извлечения 
необходимых данных.
Нестыковки стали вылезать, когда один из 3-х фронтов погасили на пару дней, 
нагрузка на оставшиеся 2 стала выше 50тыс/сек на каждом из них (при этом их 
предел гораздо выше, каждый может гарантировано "переварить" 200тыс/сек) и 
пошли расхождения в отчетах по количеству запросов с фронтов и беков.

При снижении количества запросов все снова хорошо согласуется.

Получены советы:
1) Уточнить методику расчета -- не вижу смысла, сколь-нибудь существенные и 
системные расхождения появляются только когда нагрузка на реверс-прокси выше 
50тыс/сек, т.е. 3 х 40 проблем нет,а 2 х 60 уже проблема? при этом когда 
"железки" 2 шт, а nginx-ов на них 3шт проблема снова исчезает...
2) Тюнинг сокетов -- в процессе, UDP исключен, замер связки unixSocket+rsyslog 
на один unixSocket пока показал "потолок" 150тыс/сек производительность, но еще 
не все идеи реализовал-проверил. 
3) Настройки rsyslog-а 
$SystemLogRateLimitInterval 0 
$SystemLogRateLimitBurst 0

$SystemLogRateLimitBurst -- ставился и "0", и "20000000", на конечный результат 
не повлияло. как и замена на другой syslog.
 
Всё точно идёт сразу в syslog/rsyslog напрямую, а не через
systemd-journal ? 
Точно, в  systemd-journal эти данные не фиксируются и туда вообще не попадают.

Производительности хранилища точно достаточно для 150тыс/сек (один из способов 
замера -- запуск одновременно 3-х экземпляров rsyslog на одном физическом 
сервере и заливка в 3 сразу тестового набора в 12млн сообщений на каждый, итог 
300-450тыс/сек в совокупности, непрерывно в течении нескольких часов 
заливка-ротация-удаление)

Все работает на физическом железе, без VPS-ов и контейнеров.

По результатам отпишусь, но врядли скоро, т.к. такая нагрузка не регулярна, а 
вариантов для проверки не 1 и не 2 :)

Всем спасибо за внимание.
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
https://mailman.nginx.org/mailman/listinfo/nginx-ru

Ответить