Дросселирование службы WCF
У меня есть служба WCF, развернутая в консольном приложении с включенным базовым HTTTPBinding и SSL. Также установлен следующий атрибут:
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
Я также установил поведение дросселирования
С другой стороны, я создал тестовый клиент (для теста нагрузки), который одновременно инициирует несколько клиентов (несколько streamов) и выполняет транзакции на сервере. Все кажется прекрасным, но на сервере загрузка процессора не увеличивается, поэтому я добавил несколько журналов для просмотра количества одновременных вызовов на сервер и обнаружил, что он никогда не переходил на 6.
- Лучший способ реализовать настройку запроса в ASP.NET MVC?
- Дросселирование асинхронных задач
- «ab» программа зависает после множества запросов, почему?
Я просмотрел код регистрации счетчика производительности более двух раз, и мне кажется, что это хорошо.
Поэтому я хочу спросить, где проблема в этой ситуации? Я еще не указал каких-либо ContextMode или ConcurrencyMode.
После этого сообщения я заметил, что всякий раз, когда я запускаю другой тестовый клиент Intance, мой параллельный счетчик вызовов сервера увеличивается до 2, как если бы я запускал только 1 экземпляр, максимальные Concurrent Rcvd Calls будут равны 2, и если есть два экземпляра, то такое же значение будет равным 4 и так далее. Есть ли какой-либо предел количества вызовов WCF из одного процесса?
******** Добавлено 17 марта ********
Сегодня я провел еще один тест с одним тестовым клиентом (с 50 одновременными пользователями) на том же компьютере, на котором работает сервер. На этот раз я получаю точный результат, который я хотел бы показать (т. Е. Максимальные одновременные вызовы Rcvd на сервере = 50).
Но мне нужно сделать то же самое и на других машинах. Может ли кто-нибудь помочь мне в этом?
Или используйте эту конфигурацию в клиенте.
Здесь 200 – предел от клиента
Я нашел решение: на ServicePointManager существует ограничение на соединение, которое вызывает эту проблему. Чтобы удалить этот предел, вам просто нужно установить
System.Net.ServicePointManager.DefaultConnectionLimit = X;
где предел по умолчанию равен 2.