Это обычно известно как штамповка или проблема с громовым стадом . Внезапно тонна клиентов чего-то хочет, и тогда активность возвращается к нулю. Есть разные способы справиться с этим. Если у вас есть посредник между клиентом и сервером, например, балансировщик нагрузки, вы можете использовать его для распределения нагрузки и, возможно, даже для раскрутки новых экземпляров сервера по мере необходимости.
В случае прямого подключения клиент-MySQL это обычно не вариант. Возможно, вы можете переключиться на реплицированные подчиненные устройства только для чтения, которые могут легче поглощать воздействие (то есть масштабироваться горизонтально). Или вы получаете больший сервер, который имеет лучшую производительность при пиковой нагрузке. Конечно, если в 99% случаев нет никакой нагрузки, эти решения не очень рентабельны.
Дешевое решение состоит в том, чтобы избежать одновременного перехода всех клиентов на сервер. Либо сместите каждого клиента индивидуально (например, запланируйте его работу cron на 0 * * * *
, 5 * * * *
, 10 * * * *
и т. Д.), Либо просто задерживайте каждого клиента на случайную величину каждый раз (sleep(randint(0, 360))
в Python, sleep $((RANDOM % 360)) && ...
в bash ).