Первое, что делает разработчик, когда сервис не успевает обрабатывать запросы — добавляет потоков или воркеров. Логика простая: было одно ядро, стало восемь, значит должно стать в восемь раз быстрее. На практике вы получаете код, который на четырёх потоках работает медленнее, чем на одном, а CPU при этом занят на 100%, но полезной работы делает меньше. Разберём, откуда берётся этот эффект и почему он не баг, а следствие того, как на самом деле устроены процессор и планировщик ОС.
Подробнее →