【jmeter知识】03_jmeter接口报Read timed out +ng日志499分析
背景
进行ws的登录压测时,在高并发下很容易出现WebSocket I/O error: Read timed out,需要分析产生的原因。
分析过程
1、jmeter查看结果树
2、jmeter请求体,发现Response(read) timeout(ms)字段,填写了6000ms,即6s。遍历了下查看结果树中的报错请求,发现果然Load time 时间大于6S的,均报了Response message: WebSocket I/O error: Read timed out。初步定为是此字段导致。
3、由于业务接口暂时达不到6s返回的标准,这里先不纠结,把Response(read) timeout(ms)字段,改成20000ms,重新跑一遍,再次测试,没有发现WebSocket I/O error: Read timed out的报错。
结论
本次的WebSocket I/O error: Read timed out,为jmeter脚本接口返回断言时间设置不合理导致(哈哈,其实是之前设置的我忘了,这里做下记录)。但是WebSocket I/O error: Read timed out有无其他报错原因,暂时不得而知,后面遇到再补充。
20210506补充
在上述操作后,重新压测,发现ng偶尔出现499日志。经分析如下:
ng日志中查看499有8条:
在jmeter日志(保存下来的用表格查看结果)中超过20S的read timed out刚好也有8条,结合之前的脚本已经被设置响应时间超时为20s,推测这两个的关联。
网上查询一下,发现
499对应的是 “client has closed connection”。这很有可能是因为服务器端处理的时间过长,客户端“不耐烦”了。
因此推断,在jmeter脚本设置20s超时后,由于服务器在20内没有响应返回,在20s后jmeter主动关闭了连接,导致服务器ng的日志记录499。