【问题标题】:Connecting to WCF Web Service is inexplicably slow连接到 WCF Web 服务的速度莫名其妙
【发布时间】:2011-05-17 17:07:12
【问题描述】:

我的公司目前正在从传统的 ASMX 网络服务过渡到 WCF 网络服务,因为我们需要改进对 WCF 提供的复杂类型的处理。

在调查网页的性能问题时,我发现最大的(在一定程度上)性能坑是与 WCF 服务的初始连接。当我说初始时,我的意思是以下代码,每次调用时,页面刷新就足以导致连接缓慢:

$client = new SoapClient("<address-to-webservice>",
array('features' => SOAP_SINGLE_ELEMENT_ARRAYS));

对该网络服务中方法的后续调用很快,但连接速度却莫名其妙。

在同一页面上,有一个与托管在同一服务器上的 ASMX 服务的连接,它的连接速度要快得多。

Connection to WCF Webservice took 1.6509809494019 seconds //(this is just calling new SoapClient)
Connection to ASMX Webservice took 0.24430394172668 seconds

Calling ASMX->Method
ASMX->Method returned in 0.011564970016479 seconds

Calling WCF->Method1
WCF->Method1 returned in 0.011118173599243 seconds

Calling WCF->Method2
WCF->Method2 returned in 0.0038959980010986 seconds

Calling WCF->Method3
WCF->Method3 returned in 0.0041651725769043 seconds

这是在内部网络上运行的,显然从外部连接更慢。如您所见,WCF Webservice 连接速度要慢得多。

在连接到 WCF 网络服务时,有没有办法(显着)提高性能?

更新:

有关 WCF 客户端的一些信息。 托管在 IIS 7、Windows Server 2008 上。 使用 BasicHttpBinding(因为 PHP SoapClient 不支持更复杂的 wsHttpBinding)。 连接正在使用 ssl。

此外,当通过 WCFStorm 连接时,连接速度要快得多,这让我相信问题可能出在 PHP SoapClient 上。

【问题讨论】:

  • 您需要提供有关 WCF 服务的更详细的配置信息,例如绑定(即基于 HTTP 的绑定、netTcpBinding 或其他)以及它是如何托管的(即 Windows NT 服务、IIS 7.5 或另一个主机应用程序)以获得一个好的答案。此外,您应该将 WCF 服务与用于跟踪活动的内置诊断连接起来,因为您所呈现的只是总往返时间。实际的瓶颈可能不一定是 WCF 服务。最后,WCF 是一个比 ASMX 更“重量级”的框架,因此它通常会有更多的启动成本。
  • 当我使用 WCFStorm 连接到同一个服务时,速度要快得多,因此基于此,我假设问题更多与 PHP SoapClient 相关,而不是 WCF 服务,但我会添加更多关于 WCF 配置的信息。
  • 另见:stackoverflow.com/questions/5944067/… 我认为这可能是 SoapClient 问题。

标签: php wcf web-services soap


【解决方案1】:

只是根据您在问题中的 WCFStorm 评论的猜测,可能是 ASMX 版本生成的 WSDL 可能比服务的 WCF 版本更容易解析。我不知道 PHP SoapClient 是否从 WSDL 动态创建代理,但如果 ASMX 与 WCF 生成的 WSDL 有很大不同,那么这可能会导致初始瓶颈。

【讨论】:

    【解决方案2】:

    通过修复 php.ini 中 soap.wsdl_cache_dir 的位置,我们的问题已得到解决。

    我们的网站是在 Windows 机器上托管和开发的,因此“/tmp”的默认目录不起作用。将其更改为 C:\Windows\Temp 意味着虽然初始连接仍然很慢,但所有后续请求都很快。

    我们现在将研究使用更常见的预热脚本解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      相关资源
      最近更新 更多