FunTester测试框架Redis性能测试实践

2021年09月15日 阅读数:1
这篇文章主要向大家介绍FunTester测试框架Redis性能测试实践,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

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

思路

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

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

测试用例

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版本

同上。json

控制台输出

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 !」


本文分享自微信公众号 - FunTester(NuclearTester)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。微信