最近开始接触Jmeter,Jmeter是Apache开发的一个基于Java的压力测试工具,当然也可以通过添加一些插件实现监测CPU等使用情况,进行性能测试。Jmeter不需要安装,直接执行exe文件即可,但是前提是必须安装jdk。目前为止最新版的Jmeter支持jdk1.8及以上版本。请大家按照自己情况使用
具体不在这里介绍,大家可以参考一下Jmeter的工具书,这里可以推荐大家一本http://www.jb51.net/books/581386.html,介绍的很全面,如果觉得太难,网上也有很多的简要教程,百度一下即可。
这里介绍一个我再Jmeter压测的过程中发生的一个问题。随着压测的时间的增长,发生个别的用户登录失败致使后续进城失败,查看结果数中报错信息为:
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(Unknown Source)
at java.net.SocketInputStream.read(Unknown Source)
at org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.java:161)
at org.apache.http.impl.io.SocketInputBuffer.fillBuffer(SocketInputBuffer.java:82)
at org.apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.java:278)
at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:138)
at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:56)
at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:259)
at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:286)
at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:257)
at org.apache.jmeter.protocol.http.sampler.hc.ManagedClientConnectionImpl.receiveResponseHeader(ManagedClientConnectionImpl.java:199)
at org.apache.jmeter.protocol.http.sampler.MeasuringConnectionManager$MeasuredConnection.receiveResponseHeader(MeasuringConnectionManager.java:212)
at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:273)
at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125)
at org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:684)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:486)
at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:835)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.executeRequest(HTTPHC4Impl.java:697)
at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.java:455)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSampl
最初以为是线程启动太多,造成的问题。延长线程启动时间,发现并没有改善。百度了很多的但是都没有相关的解释。经朋友提醒,发现可能是由于在Jmeter脚本中少写了一些http请求造成个别数据的信息没有接收保存。造成这种问题的原因是由于我整个流程的接口都是根据Chrome F12控制台中点击XHR来获取的,这时有些请求不在XHR中但是在整个流程中又是至关重要的,所以本人笨笨的又点击ALL查看了所有发送的请求重新再Jmeter中添加请求。这个时候再去执行脚本完美通过了。
大家在Jmeter中添加请求时注意接口前后的关系和连接,否则就可能出现这种问题。通过F12来查看有哪些接口是可以的,大家也可以使用一些抓包工具(例如:Fiddler、wireshark......)。