我有以下负载测试的测试结果-
timeStamp,elapsed,label,responseCode,Latency
1447675626444,9,API1,201,9
1447675626454,1151,API2,404,Not Found,1151
显然,对API2的调用失败,在两个调用之间存在1ms的延迟。我知道标签timeStamp是来自时代的时间,但是是从客户端发出请求的时间还是接收最后一个响应字节的时间?如果是后者,我如何才能找到从客户端发出请求的时间?
发布于 2015-11-17 16:27:04
第一个timestamp
是请求启动时间。当接收到第一个响应字节时,latency
是时间戳的时间。elapsed
是从时间戳收到完整响应的时间。所以在你的情况下
444: API1请求发出。9毫秒后,
453:接收到API1响应的第一个字节和最后一个字节--因为延迟与经过的454相同: API2请求已熄灭。
如果在JMeter中使用带有两个采样器的常规线程组,则在完全接收到对第一个采样器的响应之前,不会发出第二个请求。你的问题似乎不是纯粹的通话顺序。
==
为了澄清@Mike所说的“请求是以两行或三行代码发送的”:
时间戳是在JMeter采样器代码标记请求开始事件并生成日志条目时使用的。之后,JVM必须执行几行代码来使用Apache对象创建一个HTTPClient连接,组装一个HTTP请求,然后在可能的几个TCP数据包上发送一个HTTP数据包。在任何现代系统中,时间戳与实际发出的请求之间的这种差异将小于几毫秒。如果这个时间对您来说很重要,那么JMeter并不是真正合适的工具,您应该使用像Wireshark这样的网络嗅探器来寻找第一个数据包何时真正被发送的时间戳。
发布于 2015-11-17 13:55:42
正如您所说的,时间戳是API启动时间,也许请求是以两三行代码发送的。发送请求时无法获得确切的时间戳。据我所知,这不会影响你的表现。如果您只想测试发送请求与返回响应之间的间隔时间,则需要创建另一个API。
https://stackoverflow.com/questions/33758237
复制相似问题