Простыми словами
Много процессов ждут одно событие - освобождение блокировки, появление соединения или восстановление сервиса. Когда событие наступает, просыпаются все, хотя продолжить работу сможет лишь один или немногие. Это похоже на толпу у одной открывшейся кассы. Лишние пробуждения расходуют процессор, создают всплеск запросов и могут снова перегрузить ресурс.
Формальное определение
Thundering herd - режим конкуренции, при котором единичное изменение готовности пробуждает или активирует существенно больше ожидающих участников, чем ресурс способен обслужить одновременно.
Механизм действия
Общий сигнал распространяется всем ожидающим. Они почти синхронно выполняют проверку, захват или повторный запрос; большинство проигрывает гонку и снова засыпает либо повторяет попытку, создавая дополнительную нагрузку.
Пример в работе
В задаче «Backend» сразу применить привычное решение и назвать происходящее «Проблема грохочущего стада», не проверив, действительно ли работает этот механизм. Так можно улучшить один симптом и пропустить основную причину.
Использовать «Проблема грохочущего стада» как гипотезу: сначала определить границы ситуации и исходное состояние, затем менять только то, что связано с проверяемым механизмом, и смотреть на результат.
Ограничения
Механизм EPOLLEXCLUSIVE уменьшает пробуждение лишних ожидающих потоков, но не устраняет все формы стадного эффекта на других уровнях системы.
Источник
Linux man-pages project, “epoll_ctl(2) — EPOLLEXCLUSIVE”, current.