笔记六十二:集群压力测试

压力测试

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

测试目标 & 测试数据

  • 测试目标
    • 测试集群的读写性能 / 做集群容量规划
    • 对 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 的压力测试工具
  • 功能介绍
    • 自动创建,配置,运行测试,并且销毁 ES 集群
    • 支持不同的测试数据的比较,也支持将数据导入 ES 集群,进行二次分析
    • 支持测试时指标数据的搜集,方便对测试结果进行深度的分析

Rally 的安装以及入门

  • 安装运行
    • Python 3.4+ 和 pip3 / JDK 8 / git 1.9+
    • 运行 pip3 install esrally
    • 运行 esrally configure
  • 运行
    • 运行 esrally –distribution-version=7.1.0
    • 运行 1000 条测试数据: esrally –distribution-version=7.1.0 –test-mode

Rally 基本概念讲解

  • Tournament – 定义测试目标,由多个 race 组成
    • Esrally list races
  • Track – 赛道:测试数据和测试场景与策 略
  • Car– 执行测试方案
    • 不同配置的 es 实例
  • Award – 测试结果和报告

Benchmark Reports

集群压力测试

运行一个测试

集群压力测试

什么是压测的流程

  • Pipeline 指的是压测的一个流程
    • Esrally list pipelines
  • 默认的流程
    • From-source-complete
    • From-source-skip-build
    • From-distribution

自定义 & 分布式测试

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

  • 测试
    • esrally race –distribution-version=6.0.0 –track=nyc_taxis –challenge=append-noconflicts –user-tag=”version:6.0.0”
    • esrally race –distribution-version=7.1.0 –track=nyc_taxis –challenge=append-noconflicts –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-noconflicts –user-tag=”enableSource:true” –include-tasks=”type:index”
    • 修改:benchmarks/tracks/default/nyc_taxis/mappings.json,修改 _source.enabled 为 false
    • esrally race –distribution-version=7.1.0 –track=nyc_taxis –challenge=append-noconflicts –user-tag=”enableSource:false” –include-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
本作品采用《CC 协议》,转载必须注明作者和本文链接
快乐就是解决一个又一个的问题!
CrazyZard
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!