Тема
10 тыс. Потоков - это безумно много, и ваши потоки тратят больше времени на включение и выключение процессора, чем на фактическую работу. ака бьется.
РЕДАКТИРОВАТЬ: я предполагаю, что это веб-приложение .NET.
Использует ли ваше приложение ThreadPool или BackgroundWorkers? Похоже, что вам нужно использовать какой-то механизм, отличный от стандартного антуража потоков IIS (всего около 4 на процессор), чтобы достичь потоков 10 тыс.
Память
Каждый поток требует памяти для отслеживания в дополнение к памяти, которую он использует для работы, поэтому из-за большого объема потоков вы, вероятно, достигнете предела 1G.
Сессия (я выживу!)
Приложение, вероятно, настроено для хранения состояния сеанса в постоянном хранилище или службе состояний сеанса. В этом случае рабочий процесс может быть безопасно переработан без потери информации о состоянии пользователя. Если состояние сеанса было настроено (в файле Web.config) как In-Proc, то состояние сеанса будет потеряно при перезапуске рабочего процесса.
Рабочий процесс переработки
Еще одно замечание: перед тем, как рабочий процесс умирает, другой рабочий процесс настраивается и начинает занимать его место. Где-то в этом процессе вы, вероятно, видите процесс w3wp.exe (старый или новый) с 0 потоками.
BackgroundWorkers как кролики
Если ваши потоки выполняют работу, которая длится дольше 1 секунды (на самом деле 1/2 секунды), не используйте BackgroundWorkers. Если вы не измените максимальные потоки ThreadPool (что НЕ рекомендуется, так как это может испортить более глубокие функциональные возможности в .NET), не существует жесткого (достаточного) ограничения на количество фоновых рабочих мест, которые могут работать одновременно. В этом случае было бы лучше использовать модель очереди потребителя.
Проверить этот сайт . Это отличный ресурс по параллельному программированию с множеством моделей и примеров.