zoukankan      html  css  js  c++  java
  • FunTester测试框架Redis性能测试实践

    经历过FunTester框架Redis压测预备, 下面就应该进入实践阶段了,首先呢,先分享一个对Redis里面不停地添加key-value的测试用例。

    思路

    基本的用例设计思路跟之前的压测是一致的,就是一个线程去执行一个任务,然后不停地去做某个事情,然后用线程池去执行多个任务,然后最终收集汇总结果。

    就我自己粗浅的理解,ready使得连接词的获取以及释放和http协议的连接词使用类似原理也类似就是先去获取一个连接,然后再去做一些操作,然后再去释放连接连接,最终会在连接词里面进行一个状态的管理框架都提供了默认的管理机制这里使用。

    测试用例

    Java版本

    
    /**
     * redis添加key-value性能测试用例
     */
    public class RedisPerTest extends SourceCode {
    
        public static final String host = "FunTester隐藏地址";
    
        public static final int port = 6379;
    
        public static RedisBase drive;
    
        public static void main(String[] args) {
            drive = new RedisBase(host, port);
            drive.index = 1;
            RUNUP_TIME = 0;
            drive.set("fun" + StringUtil.getString(10), "FunTester", 100);
            FunTester funTester = new FunTester(100);
            Concurrent concurrent = new Concurrent(funTester, 400,"redis添加key-value性能测试用例");
            concurrent.start();
            drive.close();
        }
    
    
        private static class FunTester extends FixedThread {
    
            public FunTester(int limit) {
                super(null, limit, true);
            }
    
            @Override
            protected void doing() throws Exception {
                drive.set("fun" + StringUtil.getString(10), "FunTester", 100);
            }
    
            @Override
            public ThreadBase clone() {
                return new FunTester(limit);
            }
    
        }
    
    }
    
    

    Groovy版本

    同上。

    控制台输出

    INFO-> 当前用户:oker,工作目录:/Users/oker/IdeaProjects/funtester/,系统编码格式:UTF-8,系统Mac OS X版本:10.16
    INFO-> redis连接池IP:106.53.152.151,端口:6379,超时设置:5000
    INFO-> =========预热完成,开始测试!=========
    INFO-> Redis测试进度:▍▍▍▍▍▍▍▍▍  14% ,当前QPS: 1605
    INFO-> Redis测试进度:▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍  23% ,当前QPS: 1415
    INFO-> Redis测试进度:▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍  35% ,当前QPS: 1632
    INFO-> Redis测试进度:▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍  46% ,当前QPS: 1613
    INFO-> Redis测试进度:▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍  57% ,当前QPS: 1255
    INFO-> Redis测试进度:▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍  69% ,当前QPS: 1511
    INFO-> Redis测试进度:▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍  80% ,当前QPS: 1653
    INFO-> Redis测试进度:▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍  92% ,当前QPS: 1404
    INFO-> 线程:Redis测试30,执行次数:100,错误次数: 0,总耗时:25.874 s
    INFO-> 线程:Redis测试11,执行次数:96,错误次数: 0,总耗时:25.888 s
    INFO-> 线程:Redis测试366,执行次数:98,错误次数: 0,总耗时:25.744 s
    中间省略五百行日志
    INFO-> 线程:Redis测试377,执行次数:98,错误次数: 0,总耗时:26.049 s
    INFO-> 线程:Redis测试71,执行次数:98,错误次数: 0,总耗时:26.21 s
    INFO-> 线程:Redis测试388,执行次数:98,错误次数: 0,总耗时:26.089 s
    INFO-> Redis测试进度:▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍  100%
    INFO-> 
         Redis测试QPS变化曲线     
        
        见下图
    
    INFO-> 总计400个线程,共用时:26.252 s,执行总数:38,905,错误数:0,失败数:0
    INFO-> 数据保存成功!文件名:/Users/oker/IdeaProjects/funtester/long/data/Redis测试021516_400
    INFO-> 
    ~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~ JSON ~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~
    >  {
    >  ① . "rt":267,
    >  ① . "failRate":0.0,
    >  ① . "threads":400,
    >  ① . "deviation":"1.08%",
    >  ① . "errorRate":0.0,
    >  ① . "executeTotal":38905,
    >  ① . "qps2":1481.9823251561786,
    >  ① . "total":38905,
    >  ① . "qps":1498.1273408239701,
    >  ① . "startTime":"2021-09-02 15:16:35",
    >  ① . "endTime":"2021-09-02 15:17:01",
    >  ① . "mark":"Redis测试021516",
    >  ① . "table":"eJztk8sKgkAUQPeB/3A/QMFMWvgZ0Q8IDiQ0Fk1BLXtR0Lr5jVb90Cyiz+j2wB5UWj6m4A4XdKPnnHE0KpBuNVgQit12td+swbVt6Ld6zA9SPmxUjPecBhPdTiQYNEPOPBhagvVCvw3RgJswsjjC/SiJkezBwwjO7/IcpwZcmNwfem61jrc5VGRdSi5xUpUQpSyKkjOcckgnRNEkJcc45dFuMYXSlJzjlENUcoKDlwXOc2S+5PirXU5jIjc3izh1inPd5A8FMljF6fcel43IUedj4/dmWgS/KHo8Wq//ov+8HAt/QIMKqZAK9WtQIRVSoX4NKqRCKtSvQYVUSIX6NQotPAA24o0Q"
    >  }
    ~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~ JSON ~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~~☢~
    INFO-> 
                                           Redis测试 400 thread                                       
    
                        见下图
    
    Process finished with exit code 0
    
    

    Redis测试QPS变化曲线.png

    Redis测试400thread.png

    总结

    总体来讲,还是比较简单的,下期会测试一下多操作相关性或者集合value的场景,还有Redis自增value。在跟同行交流的时候,他们说平时工作中很难遇到直接对Redis进行测试的场景。但是技能的话,做一些储备还是好的。毕竟不知道什么时候就用的上了。

    Have Fun ~ Tester !

  • 相关阅读:
    05、汇编语言--环境搭建
    04、计算机基础--编码
    03、计算机基础--数制
    02、计算机基础--8086处理器
    01、计算机基础--计算机概述
    06、JavaEE--SpringMVC
    04、Android系统--Android10
    03、Android系统--Android4.4
    App自动化测试工具Uiautomator2
    Python yaml文件读写
  • 原文地址:https://www.cnblogs.com/FunTester/p/15267179.html
Copyright © 2011-2022 走看看