问题现象:
JMeter性能测试请求错误率大概在25%左右,查看出错的请求信息,发现请求数据是空的,这说明JMeter客户端没有发出请求,取样器结果中提示org.apache.http.NoHttpResponseException。取样器结果显示如下:
解决过程:
拷贝错误信息进行检索,最终找到问题原因:JMeter的HTTP请求默认勾选“使用KeepAlive”,服务端压力过大时主动断开了连接,但并没有通知客户端,下次请求该服务时httpclient继续使用该连接导致报错。
既然如此,只要客户端每次都建立新的连接就可以了。对具体服务进行压力测试并不需要保持长连接。
解决方法:
在HTTP请求中取消勾选“使用KeepAlive”
解决结果:
问题成功解决。但解决了一个问题又发现了另一个问题,请求错误率降到了3%左右,错误码502,错误信息Bad Gateway,这是服务端的问题,需要找开发人员定位。