我有来自负载测试的以下测试结果 -
steady_clocks
显式地,对API2的调用失败,两次调用之间有1个延迟。 我知道标签timeStamp是epoch的时间,但它是从客户端发出请求的时间还是收到最后一个响应字节的时间? 如果是后者,那么如何找到从客户端发出请求的时间?
答案 0 :(得分:2)
第一个timestamp
是请求开始时间。 latency
是从收到第一个响应字节的时间戳开始的时间。 elapsed
是从收到完整回复的时间戳开始的时间。所以在你的情况下,
如果您在JMeter中使用常规线程组和两个采样器,则在完全接收到对第一个采样器的响应之前,不会发送第二个请求。您的问题似乎不是纯粹的调用序列。
==
澄清@Mike所说的“请求是在两行或三行代码后发送的。”:
时间戳是JMeter采样器代码标记请求启动事件并创建日志条目的时间。之后,JVM必须执行几行代码才能使用Apache HTTPClient对象创建TCP连接,组装HTTP请求,然后通过可能的几个TCP数据包发送HTTP数据包。在任何现代系统中,时间戳和实际请求之间的差异将小于几毫秒。如果这个时间对你来说很重要,那么JMeter并不是真正合适的工具,你应该使用像Wireshark这样的网络嗅探器来查找实际传输第一个数据包的时间戳。
答案 1 :(得分:1)
正如您所说,时间戳是API启动时间,也许请求是在两行或三行代码后面发送的。发送请求时,您无法获得准确的时间戳。据我所知,它不会影响你的表现。 如果您只想测试请求发送和返回响应之间的时间长度,则需要创建另一个API。