Re: Тест nginx -- сколько сообщений в log syslog без потерь?

Anatoliy Melnik anatoliy.melnik на showjet.ru
Пн Янв 22 09:10:40 UTC 2024


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

Попробую подвести итоги по теме:
На вопрос 
"До примерно 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