w3wp.exe превышает максимальное количество потоков - PullRequest
2 голосов
/ 24 января 2012

у нас есть требование для обработки 10000 одновременных пользователей.

Позвольте мне объяснить систему.Машина имеет два процессора.ProcessModel в machine.config устанавливается как autoconfig = true.так что maxWorkerThreads = 20.

Когда я загружаю, запускаю мой кейс с 30 пользователями и наблюдаю за использованием ЦП, он достигает 100. и число потоков в w3wp.exe больше 70По умолчанию у меня 20 * 2 (ЦП) = 40.

Как только процессор касается 100%, большинство транзакций терпит неудачу или говорит максимальное время ответа

Теперь вопросы 1. Как мне получитьЕще 30 потоков назначены на тот же рабочий процесс?2. Как можно уменьшить загрузку процессора здесь?

Ответы [ 2 ]

1 голос
/ 24 января 2012

У вас есть небольшая проблема здесь.Увеличение количества потоков еще больше увеличит использование процессора .(Ваши 2 цели несовместимы.) Вы не только просите каждый процессор делать больше, но у вас будут дополнительные издержки с переключением контекста.

Вы можете исследовать использование неблокирующей библиотеки ввода-вывода, которая по существуозначают только 1-2 потока на процессор.Тем не менее, это может быть значительным изменением архитектуры вашего проекта (возможно, неосуществимым) - и вы можете обнаружить, что большая часть ЦП была фактически потрачена из-за работы, выполняемой вашим кодом, а не из-за чего-либо связанного с потоками.

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

0 голосов
/ 01 ноября 2013

Вам следует обратить внимание на выполнение асинхронных вызовов, чтобы ваши потоки не оставались активными, пока вызывающая сторона ожидает ответа.

http://msdn.microsoft.com/en-us/magazine/cc163463.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...