【问题标题】:Poor WCF performance when running on a VM在 VM 上运行时 WCF 性能不佳
【发布时间】:2012-01-21 22:19:35
【问题描述】:

我正在开发一个在我的 PC 上运行良好的自托管 WCF 应用程序;但是,当我尝试在使用 VMware Player 本地托管的 VM 上运行它时,该服务需要大约两分钟才能返回数据,而原始请求只需要几秒钟。

VM 使用 2Gb RAM 和运行 Windows Server 2008 R2 的双 CPU(在运行 Windows 7 的 8Gb/四核主机上)。

查看 WCF 服务跟踪,我有以下日志条目(时间/描述):

15:41:26.771 From: Processing message 1.
15:41:26.771 Activity boundary.
15:41:26.820 Received a message over a channel.
15:41:26.844 ServiceChannel information.
15:41:26.848 Incoming HTTP request to URI 'http://localhost:8000/Sql/Database' matched operation 'GetDatabase'
15:41:26.944 Message Log Trace
15:43:25.775 To: Execute 'MyProject.ISqlService.GetDatabase'
15:43:25.775 Activity boundary.
15:43:25.947 From: Execute 'MyProject.ISqlService.GetDatabase'
15:43:25.947 Activity boundary.
15:43:25.947 Message Log Trace
15:43:26.134 Throwing an exception.
15:43:26.134 RequestContext aborted
15:43:26.134 Activity boundary.

因此,在接收传入的 HTTP 请求和分派到服务实现之间会出现两分钟的延迟。无论请求是第一个请求(因此会招致通常的 WCF 预热惩罚)还是后续请求,都会出现这种延迟。

虽然我很欣赏我不会从 VM 获得裸机性能,但我仍然担心糟糕的性能,尤其是客户端往往会在两分钟结束之前超时。我能做些什么来改善问题吗?这让测试变得非常困难。

【问题讨论】:

  • 你有没有发现这个问题?我在虚拟盒子上遇到了一个非常相似的问题。
  • 对不起,不;最后我停止使用虚拟机。

标签: wcf vmware performance


【解决方案1】:

也许您的 proc 不支持 VT-x/AMD-V 扩展,因此虚拟化不是硬件加速的。使用 CPU-Z 检查您的硬件。

【讨论】:

  • 我按照您的建议安装了 CPU-Z,它报告 CPU 是 Intel Core 2 Quad Q9400 @ 2.66GHz,并且启用了以下指令:MMX、SSE (1、2、 3、3S、4.1)、EM64T、VT-x;所以我认为这不是具体问题。
猜你喜欢
  • 2017-10-13
  • 2013-01-14
  • 1970-01-01
  • 1970-01-01
  • 2013-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-04
相关资源
最近更新 更多