我的ASP.NET Web应用程序存在性能问题,不知道在哪里调查。 当我在Web应用程序中启用WCF客户端时,Web性能会降低,并且传入的Web请求将开始排队。
ASP.NET应用程序(IHttpAsyncHandler)作为通知通道:处理程序使客户端连接保持打开状态大约20秒(对于直接推送消息)。 20秒后,HTTP请求完成并关闭,客户端将在几秒钟后重新连接。 - >这与大约500个并发客户端运行良好。大约有20到50个(重新)连接第二个。
要进行日志记录,我们在Web应用程序中有一个跟踪侦听器,它使用TCP.NET绑定将日志消息发送到WCF服务。 IHttpAsyncHandler中的每个连接/断开都被发送到跟踪侦听器。
没有跟踪侦听器一切正常。当我启用跟踪侦听器时,Web应用程序的性能会急剧下降。 Web请求开始排队。几秒钟后,请求队列增长到几百个条目。网络开始拒绝网络连接。
我想知道为什么启用跟踪侦听器/ WCF客户端会导致如此多的性能影响。 我不确定这是否是服务器/ WCF限制的问题,或者它与性能限制有关。这可能是某种连接池限制问题吗? 哪些性能计数器可以帮助我找出这个问题的原因?
我很感激任何想法。
服务器A(Http Handler):Win 2003 R2 SP2,IIS 6
服务器B(WCF主机):Win 2008 R2 SP1,IIS 7,WAS托管
编辑:为TraceListener中收到的每条消息创建并关闭WCF roxy。
两个绑定,WCF客户端和服务器都配置了maxConnetions = 300。
答案 0 :(得分:0)
您是否保持wcf客户端打开时间过长或未正确关闭它,为什么在具有许多并发用户的情况下使用wcf作为跟踪侦听器,这似乎不是最佳解决方案。
您也可以尝试增加连接限制: Why does WCF limit concurrent connections to 5?
答案 1 :(得分:-1)
事实证明,这都与服务器性能有关。服务器运行接近CPU最大值。启用跟踪侦听器时,每次调用大约需要50毫秒。然后,我们的网络服务器无法及时处理所有请求并开始排队。