Pull to refresh
4K+
2
Shjryoku@Balaklav

Entry-level Backend engineer

6
Rating
1
Subscribers
Send message

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

Level of difficultyMedium
Reading time8 min
Reach and readers6.7K

Недавно я написал свою систему распределённой обработки задач. Сначала это был учебный проект. Мне хотелось лучше разобраться в очередях задач, координации воркеров, блокировках строк в PostgreSQL, retry‑механизмах и планировании фоновых задач.

Когда основная функциональность была готова, я понял, что не знаю, как система ведёт себя под нагрузкой.

Поэтому вместо того, чтобы добавлять очередную фичу, я решил провести простой эксперимент. Взять одинаковый набор задач и постепенно увеличивать количество воркеров.
Первые результаты выглядели именно так, как я ожидал. А потом масштабирование внезапно остановилось.

Увеличение количества воркеров с 16 до 32 практически не дало прироста производительности, а при 64 воркерах ситуация стала ещё интереснее: задачи, которые должны были выполняться около 0.5 секунды, начали занимать больше секунды.

Первой моей мыслью было, что я упёрся в PostgreSQL.
Оказалось, что нет.

Читать далее

Information

Rating
1,183-rd
Registered
Activity

Specialization

Бэкенд разработчик, Разработчик игр
Младший
Git
ООП
SQL
PostgreSQL
Docker
Linux
Python
REST
Redis
CI/CD