Подтвердить что ты не робот

ThreadPool SetMaxThreads и SetMinThreads Магический номер

Есть ли волшебное число или формула для установки значений SetMaxThreads и SetMinThreads для ThreadPool? У меня есть тысячи долгосрочных методов, которые требуют выполнения, но просто не могут найти идеальное соответствие для установки этих значений. Любые рекомендации будут очень признательны.

4b9b3361

Ответ 1

Минимальное количество потоков по умолчанию - это количество ядер вашего компьютера. Это хорошее число, обычно нет смысла запускать больше потоков, чем у вас есть ядра.

Максимальное количество потоков по умолчанию в 250 раз больше, чем у серверов .NET 2.0 с пакетом обновления 1 (SP1) и выше. Здесь есть огромное количество передышки. На четырехъядерном компьютере для достижения этого максимума потребуется 499 секунд, если ни один из потоков не завершится в течение разумного промежутка времени.

Планировщик потокаpool пытается ограничить количество активных потоков до минимума, по умолчанию количество ядер, которые у вас есть. Дважды в секунду он позволяет запускать еще один поток, если активные потоки не завершены. Темы, которые работают очень долго или много блокируют, что не вызвано вводом-выводом, не являются хорошими кандидатами для threadpool. Вместо этого вы должны использовать обычный поток.

Достижение максимума не здорово. На четырехъядерной машине только стеки этих потоков будут потреблять гигабайт виртуальной памяти. Получение OOM очень вероятно. Подумайте о снижении максимального количества потоков, если это ваша проблема. Или запустите несколько обычных потоков, которые получают пакеты работы из потоковой сети.

Ответ 2

Как правило, магическое число состоит в том, чтобы оставить его в покое. ThreadPool отлично справляется с этим.

Если вы выполняете много долгосрочных сервисов, и, эти службы будут иметь большие периоды, в которых они ждут, вы можете увеличить максимальные потоки, чтобы обрабатывать больше опции. (Если процессы не блокируются, вы, вероятно, просто замедлите работу, если увеличите количество потоков...)

Профилируйте ваше приложение, чтобы найти правильный номер.