У меня есть служба WCF, размещенная в службе Windows, InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple
Привязка nettcp настроена с listenbacklog = "512", а поведение службы настроено с maxConcurrentCalls ="512"
Сервер и клиент работают на четырехъядерных процессорах, ничего не делая.
Мой тестовый клиент использует автоматически сгенерированный прокси-сервер и выполняет 25 асинхронных вызовов в 25 потоках пула потоков.Хотя число потоков медленно увеличивается до всех 25, оно сразу порождает 10 потоков и затем запускает дополнительный поток каждую секунду или около того.Сервер WCF создает 2-3 потока для обслуживания запросов.Работа, выполняемая функцией сервиса, занимает несколько сотен миллисекунд.На завершение всех вызовов клиента требуется около 20 секунд настенного времени.
Я профилировал сервер WCF и большую часть своего времени он проводит в ThreadStart_Context, вызывая waitone ()
Может кто-нибудь сказать мне, почему это так медленно?