Что означает хайлоад
Что проверяют
Есть ли у вас рабочее определение вместо модного слова и понимаете ли, где именно ломается обычная архитектура. У дотнетчика ответ быстро сворачивает к пулу потоков, асинхронности и сборщику мусора, и интервьюер ждёт именно этого поворота.
Как отвечать
Абсолютного порога нет: ни в запросах в секунду, ни в числе пользователей. Хайлоад это состояние, в котором нагрузка перестала держаться простым добавлением ресурсов одному серверу, а требования к времени отклика при этом никто не отменял. Поэтому описывать нагрузку правильнее не словами «много запросов», а профилем: соотношение чтений и записей, пики, размер данных и целевые перцентили задержки.
Из чего складывается ответ по существу:
- измерение: нагрузочный тест на реалистичном профиле, метрики по
p95иp99, а не среднее, которое прячет хвост; - масштабирование: инстансы без состояния, состояние в общем хранилище, горизонтальный рост вместо всё более крупной машины;
- узкое место почти всегда база: пул соединений, индексы, реплики на чтение, кэш перед ней;
- деградация вместо отказа: очереди, ограничение частоты запросов, размыкатель цепи, обратное давление на источник.
Дотнет-специфика, которую ценят: сквозная асинхронность без .Result и .Wait(), иначе поток пула блокируется и наступает голодание пула; переиспользование HttpClient через фабрику; серверный режим сборщика мусора и экономия аллокаций через Span и пулы буферов, потому что на пике платит именно сборщик.
Где спотыкаются
Называют конкретное число как порог. Без профиля оно ничего не значит: тысяча лёгких чтений из кэша и сотня тяжёлых отчётов это совершенно разные системы.
Начинают с кэша и распила на сервисы, не сняв профиль нагрузки. Сначала измерение и поиск узкого места, иначе к прежней проблеме добавляются сетевые задержки, рассогласование кэша и распределённые отказы.
Рассказывают про горизонтальное масштабирование, забыв про состояние внутри процесса. Сессии в памяти, локальные кэши и фоновые задачи в веб-процессе работают, пока узел один, и ломаются на втором, причём проявляется это плавающими ошибками.