Elasticsearch-34.集群压力测试 he 段合并优化及注意事项

Elasticsearch

集群压力测试

压力测试

  • 压力 测试的目的.
    • 容量规划/性能优化/版本间性能比较/性能问题诊断
    • 确定系统稳定性,考察系统功能极限和隐患
  • 压力 测试的方法与步骤
    • 测试计划(确定测试场景和测试数据集)
    • 脚本开发
    • 测试环境搭建(不同的软硬件配置) &运行测试
    • 分析比较结果

测试目标&测试数据

  • 测试目标

    • 测试集群的读写性能 /做集群容量规划
    • 对ES配置参数进行修改,评估优化效果
    • 修改Mapping 和Setting, 对数据建模进行优化,并测试评估性能改进
    • 测试ES新版本,结合实际场景和老版本进行比较,评估是否进行升级.
  • 测试数据

    • 数据量/数据分布

测试脚本

  • ES本身提供了REST API, 所以,可以通过很多传统的性能测试工具
    • Load Runner ( 商业软件,支持录制+重放+ DSL )
    • JMeter ( Apache 开源,Record & Play)
    • Gatling (开源,支持写Scala 代码+ DSL)
  • 专门为 Elasticsearch 设计的工具
    • ES Pref & Elasticsearch-stress-test
    • Elastic Rally

ES Rally 简介

  • Elastic官方开源,基于Python 3的压力测试工具

    • https://github. com/elastic/rally
    • 性能测试结果比较: https://elast icsearch-benchmarks. elastic. co
  • 功能介绍

    • 自动创建,配置,运行测试,并且销毁ES集群
    • 支持不同的测试数据 的比较,也支持将数据导入ES集群,进行二次分析.
    • 支持测试时指标数据的搜集,方便对测试结果进行深度的分析

Rally的安装以及入门

  • 安装运行

    • Python3.4+和pip3/JDK8/git1.9+.
    • 运行pip3 install esrally
    • 运行esrally configure
  • 运行

    • 运行esrally - distribution-version=7.1.0
    • 运行1000 条测试数据: esrally - distribut ion-version=7.1. 0 --test-mode

Rally基本概念讲解

  • Tournament -定义测试目标,多个race组成

    • Esrally list races
  • Track -赛道: 测试数据和测试场景与策略

    • https://gi thub. com/elastic/rally-tracks
    • esrally list tracks
  • Car- 执行测试方案

    • 不同配置的es实例
  • Award-测试结果和报告

Benchmark Reports

在这里插入图片描述

运行一个测试

在这里插入图片描述

什么是压测的流程.

  • Pipeline 指的是压测的一个流程
    • Esrally list pipelines
  • 默认的流程
    • From-source-complete
    • From-source-skip-build
    • From-distribution
    • Benchmark-only (对 已有的集群进行测试)

自定义&分布式测试

  • Car

    • https://esrally. readthedocs. io/en/latest/car. html
    • 使用自建的集群
  • Track

    • 自带的测试数据集: Nyc_ _taxis 4.5 G / logging 1. 2G
    • 更多的测试数据集:. https://gi thub. com/elastic/rally-tracks
  • 分布式测试

    • https://esrally. readthedocs. io/en/lates t/recipes. html#recipe-distributed-load-driver

实例:比较不同的版本的性能

  • 测试

    • esrally race 一-distribution-version=6. 0.0 – track=nyc_ _taxis - -challenge=append-no-conflicts --user-tag=" version:6.0.0”
    • esrally race 一-distribution-version=7. 1.0一- track=nyc_ _taxis - -challenge=append-no-conflicts --user-tag=“version:7. 1.0”
  • 比较结果

    • esrally list races
    • esrally compare --baseline=[6. 0. 0 race] --contender=[7. 1.0 race]

实例:比较不同Mapping 的性能

  • 测试

    • esrally race – distribution-version=7.1.0 – track=nyc_ taxis – challenge=append -no- conflicts --user-tag=" enableSource:true" --include-tasks=" type: index”

    • 修改: benchmarks/ tracks/ defaul t/nyc_ taxis/mappings. json,修改_ source. enabled为false

    • esrally race --distribution-version=7. 1.0 --track=nyc_ _taxis --challenge=append-no-conflicts - -user- tag=’ enabl eSource:false”- - inc lude-tasks=" type: index

  • 比较

    • esrally compare - -baseline=[enableAll race] --contender=[disableAll race]

实例:测试现有集群的性能

  • 测试
    • esrally race --pipeline=benchmark-only --target-hosts=127. 0. 0.1:9200 – track=geonames-- challenge=append- -no-conflicts

demo API

pip3 install esrally

esrally configure

# 只测试 1000条数据
esrally --distribution-version=7.1.0 --test-mode

# 测试完整数据
esrally --distribution-version=7.1.0

段合并优化及注意事项

Lucene Index 原理回顾

在这里插入图片描述

Merge优化

  • ES和Lucene 会自动进行Merge操作

  • Merge 操作相对比较重,需要优化,降低对系统的影响

  • 优化点一: .降低分段产生的数量/频率

    • 可以将Refresh Interval 调整到分钟级别/ indices. memory. index_ buffer size (默认是10%)
    • 尽量避免文档的更新操作
  • 优化点二: 降低最大分段大小,避免较大的分段继续参与Merge, 节省系统资源。(最终会有多个分段)

    • Index. merge. policy. segments_ per_ tier, 默认为10,越 小需要越多的合并操作
    • Index. merge. pol icy. max_ merged segment, 默认5 GB,操作此大小以后, 就不再参与后续的合并操作
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值