Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 为什么我的代码可能需要几毫秒才能运行,而客户端需要很长时间才能从服务器获得答案?_Performance_Iis_Azure - Fatal编程技术网

Performance 为什么我的代码可能需要几毫秒才能运行,而客户端需要很长时间才能从服务器获得答案?

Performance 为什么我的代码可能需要几毫秒才能运行,而客户端需要很长时间才能从服务器获得答案?,performance,iis,azure,Performance,Iis,Azure,我们有一个web角色托管在azure中的两台小型机器上,我们将一些xml(几kb)发布到这些机器上。然后,该web角色调用另一个WCF服务(同一部署中的另一个web角色,同样是小实例),该服务执行一些处理并返回guid,第一个web角色将该guid返回给客户端 当我们在post方法中运行负载测试并计时代码时,它通常运行得很快(例如600毫秒),但客户端(在本例中,SoapUI设置为不包括发送和接收数据的时间)有时会报告方法调用花费了近6000毫秒。这似乎是由IIS日志备份的。这可能发生在1%的通

我们有一个web角色托管在azure中的两台小型机器上,我们将一些xml(几kb)发布到这些机器上。然后,该web角色调用另一个WCF服务(同一部署中的另一个web角色,同样是小实例),该服务执行一些处理并返回guid,第一个web角色将该guid返回给客户端

当我们在post方法中运行负载测试并计时代码时,它通常运行得很快(例如600毫秒),但客户端(在本例中,SoapUI设置为不包括发送和接收数据的时间)有时会报告方法调用花费了近6000毫秒。这似乎是由IIS日志备份的。这可能发生在1%的通话中

我怎么才能知道这段时间到哪里去了,因为我似乎没有任何其他的代码,我们要对这段时间负责

编辑以添加更多信息


我们已经对此做了一些分析(很简单,通过启动秒表做一些事情并结束它并记录结果),我们可以控制的所有代码,从文章的入口点到返回结果的那一刻都需要600毫秒,但soap UI报告相同调用的时间几乎为6000毫秒(由返回的guid标识).

这是IIS睡眠造成的吗?一旦它升温,它又快了吗?我敢打赌这是你的问题。我记得空闲超时默认设置为10分钟左右。但在这个细节上可能是错误的。如果你愿意,你可以用启动脚本,甚至用启动脚本中的C#来更改它。它不会空闲,因为这是中间的几个请求一个负载测试,所以一切都很好,然后突然我们会得到一批显示这种行为的测试。另一个很大的可能性是你如何托管WCF及其配置。有许多可能的方法来配置并发设置,以导致阻塞。否则,我会开始做一些分析来识别exact延迟的位置是否在您的代码、WCF、IIS/WAS、internet等中。最终,延迟是随机的还是相互关联的?例如,当第一个遇到延迟的调用完成时,是否所有调用几乎同时完成?是否存在共享资源?等等。