#132

Дрифтуй во сне

Очень часто sleep() заслуживает, чтобы в него добавили небольшой рандомчик. Все задачи по разгребанию очереди, поллинга, проверки семафоров, перерывы для разгрузки внешних ресурсов — все эти паузы стоит делать немного случайными.

sleep(SLEEP_TIME_MIN + round(rand() * SLEEP_TIME_DRIFT)));

В любой сложной системе происходит миллион вещей, и чем меньше в ней одинаковых пауз — тем плавнее будет распределяться износ. Очевидный пример: если у тебя разборщики очереди работают на множестве серверов, то одинаковое время паузы приведет к тому, что каждые несколько часов все разборщики станут спрашивать базу в унисон.