3

我的 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。

4

2 回答 2

0

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

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

于 2013-01-04T17:12:42.257 回答
-1

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

于 2013-02-01T08:57:20.963 回答