У меня есть клиент WCF для отправки запроса на услугу. И мой бизнес-код вызывает API-интерфейс клиента для отправки более 300 запросов в секунду. Но мой клиент отправляет только около 50 для обслуживания в соответствии с счетчиками производительности моей службы и WCF ServicePoint.Почему мой клиент отправляет запрос так медленно?
И я увеличил ServicePointManager.DefaultConnectionLimit до 1000 в коде и установил maxConCurrentCalls на 1000 в файле конфигурации службы, но немного улучшился.
Возможно, в WCF-клиенте может быть очередь для запросов на отправку. Есть ли способ настроить его и ускорить мой клиент.
Вот моя конфигурация для клиента:
<basicHttpBinding>
<binding name="Binding" closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="2000000" maxBufferPoolSize="524288" maxReceivedMessageSize="2000000"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="false">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
Простой тест должен состоять в том, чтобы запустить двух одновременных клиентов и посмотреть, будут ли они производить хиты в два раза быстрее, чем на сервере. Если они это сделают, это проблема дросселирования клиентов. – TheJacobTaylor
Я нашел причину. Существует ограничение потока (50), определенное IIS 6.0. Решение этой проблемы - это мой сервис с настраиваемым хостом. –