【问题标题】:IIS performance bottleneck with ASP.NET HttpHandler and WCF Client in the Website网站中 ASP.NET HttpHandler 和 WCF 客户端的 IIS 性能瓶颈
【发布时间】:2012-12-19 03:36:25
【问题描述】:

我的 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 处理程序):Win 2003 R2 SP2、IIS 6
服务器 B(WCF 主机):Win 2008 R2 SP1、IIS 7、WAS 主机


编辑:为 TraceListener 中收到的每条消息创建和关闭 WCF 代理。
两个绑定,WCF 客户端和服务器都配置了 maxConnetions=300。

【问题讨论】:

    标签: performance wcf iis-6 connection-pooling throttling


    【解决方案1】:

    您是否让 wcf 客户端打开太久或没有正确关闭它,为什么在这种有许多并发用户的场景中使用 wcf 作为跟踪侦听器,这似乎不是最佳解决方案。

    您也可以尝试增加连接限制: Why does WCF limit concurrent connections to 5?

    【讨论】:

    • 嗨。 WCF 客户端和服务器上的两个绑定都设置为 maxConnections=300。这应该会解除 5 个连接的限制。同意,对于这种情况,解决方案可能不是最佳的。但我无法改变这一点。
    【解决方案2】:

    原来这一切都与服务器性能有关。服务器正在接近 CPU 最大值运行。启用跟踪侦听器时,每次调用需要多花大约 50 毫秒。然后,我们的网络服务器无法及时处理所有请求并开始对它们进行排队。

    【讨论】:

      猜你喜欢
      • 2012-02-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-22
      • 1970-01-01
      • 2012-01-17
      • 1970-01-01
      • 1970-01-01
      • 2015-07-27
      相关资源
      最近更新 更多