J'ai un client WCF pour envoyer une requête à un service. Et mon code d'entreprise appelle l'API client pour envoyer plus de 300 requêtes par seconde. Mais mon client envoie seulement environ 50 au service selon les compteurs de performance de mon service et WCF ServicePoint.Pourquoi mon client envoie-t-il une demande si lentement?
Et j'ai augmenté ServicePointManager.DefaultConnectionLimit à 1000 dans le code, et a mis maxConCurrentCalls à 1000 dans le fichier de configuration de service, mais a obtenu peu d'amélioration.
Je suppose qu'il peut y avoir une file d'attente dans le client WCF pour les demandes à envoyer. Y at-il un moyen de le configurer et d'accélérer mon client.
Voici ma configuration pour le client:
<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>
Un simple test serait de démarrer deux clients simultanés et voir si elles produisent des hits à deux fois le taux sur le serveur. Si c'est le cas, c'est un problème de limitation du client. – TheJacobTaylor
J'ai trouvé la raison. Il existe une limitation de thread (50) définie par IIS 6.0. Une solution à ce problème est d'héberger mon service avec un hôte personnalisé. –