4 или 5000, это не важно, это просто настройка. Вы можете установить 1 миллиард, если хотите, это не сделает ваше приложение более масштабируемым. В конце концов, ваша машина имеет только 4 ядра (или 8 или 2, но не 5000). Всегда имейте в виду, что одновременно может быть запущено столько потоков, сколько число ядер. Каждый поток, превышающий количество ядер, просто накладные расходы. Это создаст больше переключателей контекста, потребит процессор и займет больше памяти.
IO (доступ к базе данных, веб-сервис, доступ к файлам ...) не загружает процессор. Если вы делаете это синхронно, он заблокирует поток на всю длину операции. Если у вас длительная операция (5 секунд) и загрузка 1000 запросов в секунду, вы будете постоянно блокировать 5000 потоков. Таким образом, вы уже истощаете пул потоков (с настройкой 5000). Но что еще хуже, вы будете ломать свою работу переключателями контекста. Если вы делаете это асинхронно, ни один поток не будет заблокирован, ни один ресурс не будет занят, и у вас нет ограничений на количество одновременных операций ввода-вывода, которые вы можете выполнить.
Добавление большего количества потоков в пул потоков - быстрый и грязный хак, когда вы не можете позволить себе переписать свое приложение с помощью асинхронного ввода-вывода. Это не чистое решение.