问题描述
一旦我将服务交付给Web服务器上的IIS,我就面临着WCF的巨大性能问题.
Hi, I'm facing big WCF performance issues once I deply my service to IIS on my web server.
服务是在IIS(WS2012)中自托管的,并且是使用VS2012开发的.
Service is self-hosted in IIS (WS2012) and is developed with VS2012.
当我在本地测试该服务时,我会立即获取数据,但是当我调用Web上的IIS中托管的服务时,最多需要5秒钟才能获取相同的数据.
When I test the service locally I get data imediately, but when I call the service hosted in IIS on the web it takes up to 5 seconds to get the same data.
这是我的网络配置的一部分:
Here's a portion of my web config:
<services>
<service name="G8Service.G8Service">
<endpoint address="" binding="customBinding" contract="G8Service.IG8Service" bindingConfiguration="ReliableBindingConfig"></endpoint>
</service>
</services>
<bindings>
<customBinding>
<binding name="binHttp">
<binaryMessageEncoding compressionFormat="GZip" maxReadPoolSize="100000000" maxSessionSize="100000000" maxWritePoolSize="100000000"></binaryMessageEncoding>
<httpTransport keepAliveEnabled="true" transferMode="Buffered" maxBufferSize="100000000" maxReceivedMessageSize="100000000" maxBufferPoolSize="100000000" />
</binding>
<binding name="ReliableBindingConfig" closeTimeout="00:20:00" receiveTimeout="00:40:00" openTimeout="00:20:00" sendTimeout="00:40:00">
<transactionFlow />
<reliableSession maxRetryCount="12" ordered="true" inactivityTimeout="00:40:00" />
<mtomMessageEncoding maxBufferSize="2147483647" maxReadPoolSize="2147483647" maxWritePoolSize="2147483647">
<readerQuotas maxDepth="32" maxBytesPerRead="4096" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxNameTableCharCount="16384" />
</mtomMessageEncoding>
<httpTransport maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" />
</binding>
</customBinding>
<wsHttpBinding>
<binding name="G8Binding" maxReceivedMessageSize="100000000" maxBufferPoolSize="10000000" closeTimeout="00:10:00"></binding>
</wsHttpBinding>
</bindings>
我认为响应速度慢与绑定类型有关,我尝试了标准baseHttpBinding和标准wsHttpBinding,结果相同.我从论坛上了解到netTcpBinding对于网络上的服务不适合,任何提示都值得赞赏,我完全同意 卡住了.
I believe the slow response is related to the binding type, I tried standard baseHttpBinding as well as standard wsHttpBinding with same result. I read from forums that netTcpBinding is not ok for services on the web, any hint is appreciated, I'm completely stuck..
推荐答案
请参考以下文章以启用WCF跟踪:
配置跟踪
http://msdn.microsoft.com/en-us/library/ms733025.aspx
Please refer to the following article to enable WCF Tracing :
Configuring Tracing
http://msdn.microsoft.com/en-us/library/ms733025.aspx
要验证延迟是否来自System.Net层,可以配置System.Net跟踪,这将有助于确定System.Net层中的调用是否正在消耗更多时间.
To verify if the delay is coming from the System.Net layer, you could configure System.Net tracing, this will help determine if calls in the System.Net layer are consuming more time.
如何:配置网络跟踪
http://msdn.microsoft.com/en-us/library/ty48b824.aspx
How to: Configure Network Tracing
http://msdn.microsoft.com/en-us/library/ty48b824.aspx
另外,请检查 中的最大连接值<连接管理> System.Net设置中的元素
<连接管理>元素(网络设置)
http://msdn.microsoft.com/en-us/library/fb6y0fyc.aspx   ;
Also, please check the maxconnection value in <connectionManagement> element in System.Net settings
<connectionManagement> Element (Network Settings)
http://msdn.microsoft.com/en-us/library/fb6y0fyc.aspx
如果这些输出都没有帮助-您可能需要联系技术支持以寻求帮助,因为性能下降可能有多种原因.
If none of these outputs help - you may need to contact tech support for assistance, as there could be multiple reasons for slow performance.
这篇关于WCF服务在本地计算机上快速运行,而在网络上运行缓慢的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!