← Все новости
Я думал, что 16 воркеров ускорят обработку задач в 16 раз. Но что‑то пошло не так

Я думал, что 16 воркеров ускорят обработку задач в 16 раз. Но что‑то пошло не так

Недавно я написал свою систему распределённой обработки задач. Сначала это был учебный проект. Мне хотелось лучше разобраться в очередях задач, координации воркеров, блокировках строк в PostgreSQL, retry‑механизмах и планировании фоновых задач.Когда основная функциональность была готова, я понял, что не знаю, как система ведёт себя под нагрузкой.Поэтому вместо того, чтобы добавлять очередную фичу, я решил провести простой эксперимент. Взять одинаковый набор задач и постепенно увеличивать количество воркеров.Первые результаты выглядели именно так, как я ожидал. А потом масштабирование внезапно остановилось.Увеличение количества воркеров с 16 до 32 практически не дало прироста производительности, а при 64 воркерах ситуация стала ещё интереснее: задачи, которые должны были выполняться около 0.5 секунды, начали занимать больше секунды.Первой моей мыслью было, что я упёрся в PostgreSQL.Оказалось, что нет. Читать далее