我正在开发一个自托管的WCF应用程序,它在我的电脑上运行得很好;但是,当我尝试在使用VMware Player本地托管的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获得裸机性能,但我仍然担心可怕的性能,特别是因为客户端在两分钟结束之前趋于超时。我能做些什么来改善问题吗?它正在进行测试非常困难。
答案 0 :(得分:0)
也许你的proc不支持VT-x / AMD-V扩展,因此虚拟化不是硬件加速的。使用CPU-Z检查硬件。