• 推荐一款es轻量级的压测工具


     一 背景:

     之前折腾2天想用es 官网推荐的es压测工具,各种坑,参见我之前的安装过程centos7 安装esrally 踩坑过程_bohu83的博客-CSDN博客_esrally安装

    这里面很多参数,主要是读写的速度。

    有一点,这是基准的压测,不能很好的模拟线上的同事读写某个比例的情况。

    二 loadgen

    相对于esrally 只看es的整体指标。loadgen就简单好用多了。

    下载,解压,修改loadgen.yml 即可。

    下载地址:https://release.infinilabs.com/loadgen/stable/

    选择自己合适的版本。解压后

     如何修改参数,参见官网:就是设置es的账户,ip, 写body,读的url

    读写根据业务实际需要就行。

    性能测试 | INFINI Gateway

    变量的使用:

    面的配置中,variables 用来定义变量参数,根据 name 来设置变量标识,在构造请求的使用 $[[变量名]] 即可访问该变量的值,变量目前支持的类型有:

    类型说明
    file文件型外部变量参数
    sequence自增数字类型的变量
    range数字范围类型的变量,支持参数 from 和 to 来限制范围
    uuidUUID 字符类型的变量
    now_local当前时间、本地时区
    now_utc当前时间、UTC 时区
    now_unix当前时间、Unix 时间戳
    now_with_format当前时间,支持自定义 format 参数来格式化时间字符串,如:2006-01-02T15:04:05-0700

    查询的例子:

    配置节点 requests 用来设置 Loadgen 将依次执行的请求,支持固定参数的请求,也可支持模板变量参数化构造请求,以下是一个普通的查询请求:

    1. requests:
    2. - request:
    3. method: GET
    4. basic_auth:
    5. username: elastic
    6. password: pass
    7. url: http://localhost:8000/medcl/_search?q=name:$[[user]]

    上面的查询对 medcl 索引进行了查询,并对 name 字段执行一个查询,每次请求的值来自随机变量 user

    批量写入(bulk)操作

    使用 Loadgen 来模拟 bulk 批量写入也非常简单,在请求体里面配置一条索引操作,然后使用 body_repeat_times 参数来随机参数化复制若干条请求即可完成一批请求的准备,如下:

    1. - request:
    2. method: POST
    3. basic_auth:
    4. username: test
    5. password: testtest
    6. url: http://localhost:8000/_bulk
    7. body_repeat_times: 1000
    8. body: "{ \"index\" : { \"_index\" : \"medcl-y4\",\"_type\":\"doc\", \"_id\" :

    启动:

    ./loadgen-linux-386 -d 120 -c 7

     上面是持续120秒,7个并发的情况。

    输出结果:

    [Loadgen Client Metrics]
    Requests/sec:        3892.07
    Request Traffic/sec:    0.00bytes
    Total Transfer/sec:    55.84MB
    Avg Req Time:        256.932µs
    Fastest Request:    860.181µs
    Slowest Request:    134.490269ms
    Number of Errors:    0
    Number of Invalid:    0
    Status 200:        467048

    [Estimated Server Metrics]
    Requests/sec:        3922.53
    Transfer/sec:        56.28MB
    Avg Req Time:        1.78456ms

    这个数据需要结合kibana 监控一起看。

    包括读写速率、延迟、cpu\系统负载大小等。

    如果测试服务器充足,可以部署在多个上,一个节点可以部署多个loadgen.改下名字。

    分别设定不同的并发,模拟业务读写不同的es索引。

    开始用jmeter,不知道是不是我参数设置问题,抗不住这么大的并发jmeter自己先报了OOM 。

    开多个情况,每个设置不同的配置,这样更好的模拟线上的不同读写速率,值得推荐。

     

     

  • 相关阅读:
    多线程事物造成死锁全面分析
    Spring框架中bean的生命周期
    K8S部署Java项目 pod报错 logs日志内容:no main manifest attribute, in app.jar
    javaee ssm框架整合例子 ssm例子,需要哪些依赖,配置文件如何配置
    C#小白(基础篇)1 (变量、赋值运算符、常量、+号的作用、占位符的使用)
    矩阵中移动的最大次数
    基于 STP 的可靠网络配置
    微服务网关之Zuul下
    FlinkSQL自定义UDTF使用的四种方式
    计算机栈stack存在的意义
  • 原文地址:https://blog.csdn.net/bohu83/article/details/127551766