我正在使用Jmeter和python Requests包运行负载测试,但是当我尝试访问同一个网站时会得到不同的结果。
目标网站:http://www.somewebsite.com/
请求时间:100
Jmeter的平均响应时间:1965ms
python请求的平均响应时间:4076ms
我已经检查过响应html内容的jmeter和python请求是一样的。所以这意味着他们都得到了网站的正确答复。但不确定为什么它彼此有2倍的差异。有没有人知道有什么深刻的理由吗?
python请求示例代码:
repeat_time = 100
url = 'http://www.somewebsite.com/'
base_time = datetime.datetime.now()
time_cost = base_time
for i in range(repeat_time):
start_time = datetime.datetime.now()
r = requests.get(url, headers=headers)
end_time = datetime.datetime.now()
print str(r.status_code) + ';time cost: %s' % (end_time - start_time)
time_cost += (end_time - start_time)
print 'total time: %s' % (time_cost - base_time)
print 'average time: %s' % ((time_cost - base_time).total_seconds() / repeat_time)
答案 0 :(得分:0)
如果没有你的JMeter代码,我无法告诉你它的区别是什么,但让我告诉你在一次调用请求时发生了什么:
请记住,三个最密集的部分(通常)是:
也就是说,每个响应对象都应该有一个属性elapsed
,它会给你时间到响应体的第一个字节。换句话说,它将衡量请求实际发送的时间与找到标题结尾之间的时间。
这可能会提供比您现在测量的信息更准确的信息,这是到信息最后一个字节的时间。
那就是说,请记住,你在for循环中所做的事情也在很多地调用垃圾收集器:
如果您创建一次会话,您的脚本通常会表现得更好。