Jmeter压测简单Java接口

Jmeter

Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。闲来无事写了一个demo来测试并发访问下的性能。

Web程序

关键部分代码如下

@RequestMapping(value = "/jmeter")
@Controller
public class TestController {
    private static Connection connection;
    static {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            //待优化:使用数据库连接池
            connection  = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/test?user=root&password=123456");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @ResponseBody
    @RequestMapping(value="/query", method = RequestMethod.GET)
    public Object query(HttpServletRequest request,
                                HttpServletResponse response,
                                @RequestParam(value = "id", defaultValue = "0") int id) {
        Map map = new HashMap();
        map.put("id", id);
        System.out.println(Thread.currentThread().getName() + "--" + this.hashCode() + "---" + id);
        try {
            Statement statement = connection.createStatement();
            //数据库表中共有1000条数据,id为主键
            ResultSet resultSet = statement.executeQuery("SELECT * FROM sheet0 where id = " + id);
            if (resultSet.next()) {
                System.out.println("success");
            }
            resultSet.close();
            statement.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return map;
    }
}

启动Tomcat后访问http://localhost:8080/jmeter/query?id=395即可。

配置Jmeter

479975-20170728195035633-1931037819.png
479975-20170728195115008-839813962.png

Random Variable的值设置为0-1000

在聚合报告中可以查看请求的统计情况。下图给200个线程并发时的统计数据
479975-20170728195249665-866539718.png

统计数据
线程数平均(ms)中位(ms)90线(ms)95线(ms)99线(ms)Min(ms)Max(ms)错误率
10023455080
20022344070
3003244210650
400223470230
50053467101070
600434106601150
7008363613202310
8007351814202380
900113247614202080
10001534310417302660
11006311215601240
1200691423632344606930.23%
1300485172257391015882.23%
1400128122123482619028524.46%
15001177031938648807930.68%
16001881014606511372016533.51%
710013878396473555012351.61%
18002862046277451478027179.16%
1900399258754113242930507015.45%
20008473432389429076611836626.06%
210010514073144505579250981130.25%
22005882951393264843910550721.64%
23001242455425467661444201522131.02%
240010774294304478979030854729.08%
2500145650544837858819501498834.73%

479975-20170731095323474-853574175.png

由统计数据可见,当并发线程数在1100个以下时,请求的成功率及95线等指标均比较正常,性能并没有很大的问题。当并发线程数量超过1200个时,错误率和95线等指标急剧上升。可见,正确预估web系统的QPS对于集群中机器的部署数量有直接的指导意义。以下几张图为测试过程中jconsole的监测情况。

479975-20170728201434915-1801533401.png

由jvm的内存使用情况可见,随着jmeter并发线程数的增加,tomcat所在的jvm中的GC频率呈增加趋势。

479975-20170728201543024-1179810131.png

479975-20170728201630352-92712857.png

当Tomcat的线程数达到最大数量之后就不再增加,对于jmeter的并发请求,tomcat只能使用有限的线程来处理。

测试中使用的机器为Mac Pro2015版,CPU为Intel Core i7,内存为16GB 1600MHz DDR3

JDK版本为64-Bit 1.8.0_121-b13

Tomcat版本为 8.5.3

Jmeter版本为1.0

MySQL版本为5.7.18

本文原始链接 http://www.cnblogs.com/umgsai/p/7252335.html 为优赛工作室原创,转载请注明出处,

转载于:https://www.cnblogs.com/umgsai/p/7252335.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值