2017-05-05 44 views
4

我正在为特定的SOAP API编写客户端。我得到巨大的执行时间,谁告诉我因此接触API业主:服务器日志和我的客户端之间的SOAP调用执行时间测量差异

的从存储通话时长2个 来源计算GetPrices呼叫的平均通话时间显示平均时间 整个5那天的下注者称我们的系统刚好超过了25毫秒,这与同期 期间大多数下注者的平均值相匹配。这两个来源是Sentry日志,其中 计算所有应用程序组件之间的呼叫持续时间,以及从IIS服务器(包括从我们的API服务器到发送器呼叫机器的 传输时间)所用的时间。

对于相同的GetPrices调用完全相同的5天,我平均为0.08-0.1s,这比服务器日志显示长4倍。

什么可能是我的测量结果和API所有者的测量之间存在如此之大的差异?

我测量的执行时间的方式很简单:

start_time = time.time() 
# GetPrices call 
end_time = time.time() - start_time 

请让我知道如果有什么我可以提供。

+2

您不只是测量服务器响应时间,还需要您的soap库解析响应并将其转换为相关对象的时间。你在使用哪个库? – jordanm

+0

@jordanm我正在使用python suds库。此GetPrices返回的响应仅为11477字节,即0.01mb。我怀疑解析对执行时间有多大影响。还是呢? – Marijus

+1

您可以使用分析器来确定大部分执行时间的花费。多年前,我有一个项目,那里的soap调用花了很长时间来处理,但后来发现它在我们使用的库(python-zsi)中效率低下。转向泡沫给了我们巨大的性能提升。 – jordanm

回答

2

请考虑下表。
总之,你正在考虑服务器的工作量,服务器dosn't。

client      server 
start timing 
client get (small data) -> server receive request 
         <- server ack request start timing 
client receive ack 
client waiting response  server workload to create response 
         <- server response (big data) 
client receive response 
client ack response  -> server stop timing 
client workload parsing response 
client stop timing 

如果你能够在ACK点开始/停止计时,你的时间差异变得更低。

0

网络延迟,查询到达服务器所需的时间以及您接收答案的时间如何? 你做过网络跟踪吗,通常你可以在tcp头文件中看到这个原因,发送时间是存储的,你可以使用网络监视器(或其替代品)或wireshark。分析这一点。

一个简单的简单延迟测试是在窗口上进行路径查找。

相关问题