前一段时间进行jmeter压测时,一直报错,查看了下日志才发现报了一堆non http response code: org.apache.http.connectionclosedexception,直接jmeter就没发送到服务端
本想加个Constant Throughput Timer去进行控制qps从而避免错误率,可是那样qps就不是服务器的最大压力值了。
想了好几种方法,也将jmeter.properties中的httpclienc.timeout调大去尝试,还是有这个错误
最后试了一下将client implementation配置成java,结果奇迹出现了,发送不出去的错误被避免了,qps的量也上来了
总结:有加解密的情况下,默认的HTTPClinet在POST时会自动将特殊字符转义,然而Java在发送过程中却未处理;
jmeter发送http请求时,implementation会有以下几种选项
JAVA:使用的是JAVA JVM提供的http方法,但有一定的限制
HttpClient4.1:使用的是Apache HttpClient4.1部件
空白:使用Http默认请求中配置或jmeter.properties中jmeter.httpsample中的配置