【发布时间】: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