我正在使用perfmon来检查我的服务行为。我所做的是在不同的机器上启动6个客户端应用程序实例,并以120个线程(每个客户端应用程序20个线程)向服务器发送请求。WCF中的服务实例
我已经检查过计数器和实例的最大数量(我使用PerSession模型并将实例的数量设置为100)为12,我认为奇怪的是我的服务响应时间大约为120秒......我认为增加实例数量将导致WCF创建更多实例,因此响应时间会更快。
任何想法为什么WCF不会创建更多的服务实例?
感谢帕维尔
我正在使用perfmon来检查我的服务行为。我所做的是在不同的机器上启动6个客户端应用程序实例,并以120个线程(每个客户端应用程序20个线程)向服务器发送请求。WCF中的服务实例
我已经检查过计数器和实例的最大数量(我使用PerSession模型并将实例的数量设置为100)为12,我认为奇怪的是我的服务响应时间大约为120秒......我认为增加实例数量将导致WCF创建更多实例,因此响应时间会更快。
任何想法为什么WCF不会创建更多的服务实例?
感谢帕维尔
您可能要参考this article并进行调整,以您的WCF的配置(特别是MAXCONNECTIONS),以获得您想要连接的数量。
考虑使用诸如http://www.codeplex.com/WCFLoadTest之类的命令来启动服务。
此外,perfmon只会让你到目前为止。如果你想调试WCF服务,你应该看看Windows SDK中的SvcTraceViewer和SvcConfigEditor。
在你的服务绑定什么你设置maxconnections?一旦达到限制,呼叫连接将被阻止。
默认为10我想。
WCF服务默认情况下,节流 - 这是一个服务行为,它可以轻松地调整。
查看MSDN docs on ServiceThrottling。
下面是默认设置:
<serviceThrottling
maxConcurrentCalls="16"
maxConcurrentInstances="Int.MaxValue"
maxConcurrentSessions="10" />
通过这些设置,就可以轻松控制多少会话或并发呼叫可以被处理,你可以确保你的服务器不会被(欺诈)的请求淹没并跪下。
Ufff,最后一次尝试去理解那个愚蠢的WCF。
我现在所做的是:
创建客户端,启动20个线程,每个线程将在循环中的服务请求。服务器上的性能计数器声称只有服务对象的2个实例始终创建。平均请求时间约为40秒(我在代理呼叫之前开始测量,在呼叫返回后结束)。
修改该客户端以启动5个线程并启动该客户端的4个实例(以模拟前面示例中的20个线程行为)。性能监视器显示服务对象的8个实例始终创建。平均请求时间为20秒。
有人能告诉我发生了什么事吗?我认为服务器存在一个问题,即它不想处理更多的请求,但显然这是客户端引起的骚动,不希望发送更多的请求,也许会有某种配置选项,限制客户端同时发送多个两个请求...(缓冲区,节流等...)
通道工厂是在每个线程中创建的。
maxConnections属性?我应该在哪里应用它?绑定配置? – dragonfly 2009-12-02 10:22:29