我的 ASP.NET Web 应用程序存在性能问题,不知道去哪里调查。当我在我们的 Web 应用程序中启用 WCF 客户端时,Web 性能下降并且传入的 Web 请求开始排队。
情况:
ASP.NET 应用程序 (IHttpAsyncHandler) 作为通知通道:处理程序使客户端连接保持打开状态大约 20 秒(用于直接推送消息)。20 秒后,HTTP 请求完成并关闭,客户端将在几秒后重新连接。--> 这一切运行良好,大约有 500 个并发客户端。每秒大约有 20 到 50 个(重新)连接。
要进行日志记录,我们在 Web 应用程序中有一个跟踪侦听器,它使用 TCP.NET 绑定将日志消息发送到 WCF 服务。IHttpAsyncHandler 中的每个连接/断开连接都发送到跟踪侦听器。
问题:
没有跟踪监听器一切正常。当我启用跟踪侦听器时,Web 应用程序的性能会急剧下降。Web 请求开始排队。几秒钟后,请求队列增长到数百个条目。网络开始拒绝网络连接。
我想知道为什么启用 Trace Listener/WCF Client 会对性能产生如此大的影响。我不确定这是否更多是服务器/WCF 节流的问题,还是与性能限制有关。这可能是某种连接池限制问题吗?哪些性能计数器可以帮助我确定此问题的原因?
我会很感激任何想法。
服务器 A(Http 处理程序):Win 2003 R2 SP2、IIS 6
服务器 B(WCF 主机):Win 2008 R2 SP1、IIS 7、WAS 托管
编辑:为 TraceListener 中收到的每条消息创建和关闭 WCF roxy。
两个绑定,WCF 客户端和服务器都配置了 maxConnetions=300。