Java秒杀系统方案优化 -第4章 秒杀压测-Jmeter压力测试

1. 下载Jmeter压力测试

Jmeter是一个压力测试的一个工具,下载地址可以在百度直接搜索Jmater,或者点击Jmeter下载地址去到Apache下载
下载会看到下列的文件夹:
Java秒杀系统方案优化 -第4章 秒杀压测-Jmeter压力测试_第1张图片

2.使用压力测试工具
(windows下)进入BIN目录点击jmeter.bat就会出现图像化的压力测试工具,如下图:
Java秒杀系统方案优化 -第4章 秒杀压测-Jmeter压力测试_第2张图片

然后进行以下操作添加线程组

Java秒杀系统方案优化 -第4章 秒杀压测-Jmeter压力测试_第3张图片
Java秒杀系统方案优化 -第4章 秒杀压测-Jmeter压力测试_第4张图片

然后添加默认的HTTP请求配置
Java秒杀系统方案优化 -第4章 秒杀压测-Jmeter压力测试_第5张图片
Java秒杀系统方案优化 -第4章 秒杀压测-Jmeter压力测试_第6张图片

然后添加HTTP请求的信息
Java秒杀系统方案优化 -第4章 秒杀压测-Jmeter压力测试_第7张图片
Java秒杀系统方案优化 -第4章 秒杀压测-Jmeter压力测试_第8张图片

然后添加压力测试的结果集
Java秒杀系统方案优化 -第4章 秒杀压测-Jmeter压力测试_第9张图片

Java秒杀系统方案优化 -第4章 秒杀压测-Jmeter压力测试_第10张图片

3.自定义变量模拟多用户
首先就是要生成多个用户,因此视频中也提供了代码来生成了用户了同时也获取了TOKEN信息了
具体的代码如下:

public class UserUtil {

    private static void createUser(int count) throws Exception{
        List users = new ArrayList(count);
        //生成用户
        for(int i=0;i
            MiaoshaUser user = new MiaoshaUser();
            user.setId(13000000000L+i);
            user.setLoginCount(1);
            user.setNickname("user"+i);
            user.setRegisterDate(new Date());
            user.setSalt("1a2b3c");
            user.setPassword(MD5Util.inputPassToDbPass("123456", user.getSalt()));
            users.add(user);
        }
        System.out.println("create user");
        //插入数据库
        Connection conn = DBUtil.getConn();
        String sql = "insert into miaosha_user(login_count, nickname, register_date, salt, password, id)values(?,?,?,?,?,?)";
        PreparedStatement pstmt = conn.prepareStatement(sql);
        for(int i=0;i
            MiaoshaUser user = users.get(i);
            pstmt.setInt(1, user.getLoginCount());
            pstmt.setString(2, user.getNickname());
            pstmt.setTimestamp(3, new Timestamp(user.getRegisterDate().getTime()));
            pstmt.setString(4, user.getSalt());
            pstmt.setString(5, user.getPassword());
            pstmt.setLong(6, user.getId());
            pstmt.addBatch();
        }
        pstmt.executeBatch();
        pstmt.close();
        conn.close();
        System.out.println("insert to db");
        //登录,生成token
        String urlString = "http://localhost:8080/login/do_login";
        File file = new File("D:/tokens.txt");
        if(file.exists()) {
            file.delete();
        }
        RandomAccessFile raf = new RandomAccessFile(file, "rw");
        file.createNewFile();
        raf.seek(0);
        for(int i=0;i
            MiaoshaUser user = users.get(i);
            URL url = new URL(urlString);
            HttpURLConnection co = (HttpURLConnection)url.openConnection();
            co.setRequestMethod("POST");
            co.setDoOutput(true);
            OutputStream out = co.getOutputStream();
            String params = "mobile="+user.getId()+"&password="+MD5Util.inputPassToFormPass("123456");
            out.write(params.getBytes());
            out.flush();
            InputStream inputStream = co.getInputStream();
            ByteArrayOutputStream bout = new ByteArrayOutputStream();
            byte buff[] = new byte[1024];
            int len = 0;
            while((len = inputStream.read(buff)) >= 0) {
                bout.write(buff, 0 ,len);
            }
            inputStream.close();
            bout.close();
            String response = new String(bout.toByteArray());
            JSONObject jo = JSON.parseObject(response);
            String token = jo.getString("data");
            System.out.println("create token : " + user.getId());

            String row = user.getId()+","+token;
            raf.seek(raf.length());
            raf.write(row.getBytes());
            raf.write("\r\n".getBytes());
            System.out.println("write to file : " + user.getId());
        }
        raf.close();

        System.out.println("over");
    }

    public static void main(String[] args)throws Exception {
        createUser(5000);
    }
}

添加生成用户的配置信息
Java秒杀系统方案优化 -第4章 秒杀压测-Jmeter压力测试_第11张图片
Java秒杀系统方案优化 -第4章 秒杀压测-Jmeter压力测试_第12张图片
Java秒杀系统方案优化 -第4章 秒杀压测-Jmeter压力测试_第13张图片

同理的是如果需要什么参数,又要不同用户的请求,这样就可以模拟到了

你可能感兴趣的:(秒杀系统方案优化)