Мне развернули сервис WCF в консольном приложении с BasicHTTPBinding, и SSL включил. Следующий атрибут установлен также:
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
Я также установил поведение регулировки на
<serviceThrottling maxConcurrentCalls="2147483647" maxConcurrentSessions="2147483647"
maxConcurrentInstances="2147483647" />
С другой стороны, я создал тестовый клиент (для нагрузочного теста), который инициирует несколько клиентов одновременно (несколько потоков) и выполняет транзакции на сервере. Все кажется прекрасным, но на сервере загрузка ЦП не увеличивается так, я добавил некоторый вход для просмотра количества параллельных вызовов к серверу и нашел, что это никогда не переходило 6.
Я рассмотрел код входа счетчика производительности более двух раз, и это кажется прекрасным мне.
Таким образом, я хочу спросить, где проблема в этой ситуации? Я еще не указал вида ContextMode или ConcurrencyMode.
После этого Сообщения я заметил, что каждый раз, когда я запускаю другой Intance Тестового Клиента, мой параллельный счетчик Вызовов Сервера увеличивается до 2 как то, если я работаю, только 1 инстанцирует максимальные Параллельные Вызовы Rcvd, будет 2 и если существует два, инстанцируют то же значение, переходит в 4 и так далее. Есть ли предел Количества Вызовов WCF от однажды процесса?
******** Добавленный 17 марта ********
Сегодня я запустил другой тест с одним тестовым клиентом (с 50 параллельными пользователями) на той же машине, на которой работает сервер. На этот раз я получаю точный результат, что я хотел, чтобы это показало (т.е. Максимальные параллельные вызовы Rcvd Сервером = 50).
Но я должен сделать это то же на машинах других также. Кто-либо может помочь мне на этом?
Я нашел решение: в ServicePointManager есть ограничение на соединение, которое вызывало эту проблему. Чтобы убрать этот лимит, нужно просто установить
System.Net.ServicePointManager.DefaultConnectionLimit = X;
где лимит по умолчанию равен 2.