服务器日志和我的客户端之间的SOAP调用执行时间测量差异
问题描述:
我正在为特定的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
请让我知道如果有什么我可以提供。
答
请考虑下表。
总之,你正在考虑服务器的工作量,服务器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点开始/停止计时,你的时间差异变得更低。
答
网络延迟,查询到达服务器所需的时间以及您接收答案的时间如何? 你做过网络跟踪吗,通常你可以在tcp头文件中看到这个原因,发送时间是存储的,你可以使用网络监视器(或其替代品)或wireshark。分析这一点。
一个简单的简单延迟测试是在窗口上进行路径查找。
您不只是测量服务器响应时间,还需要您的soap库解析响应并将其转换为相关对象的时间。你在使用哪个库? – jordanm
@jordanm我正在使用python suds库。此GetPrices返回的响应仅为11477字节,即0.01mb。我怀疑解析对执行时间有多大影响。还是呢? – Marijus
您可以使用分析器来确定大部分执行时间的花费。多年前,我有一个项目,那里的soap调用花了很长时间来处理,但后来发现它在我们使用的库(python-zsi)中效率低下。转向泡沫给了我们巨大的性能提升。 – jordanm