环境准备

  linux centOS(工作环境)

  python3.4及以上

  pip3

  JDK8

  git1.9及以上

  gradle2.13及以上

 准备过程中的坑

  这些环境准备没什么太大问题,都是wget下来安装就行,唯一有一个python3安装的坑。

  由于本人安装的是python3.6.1,pip3和setupTools都是集成在python安装包里的,比python2时代方便许多,当一切都井井有条后,pip3 install esrally,报出如下错误

  Could not fetch URL https://pypi.python.org/simple/esrally/: There was a problem confirming the ssl certificate: Can't connect to HTTPS URL because the SSL module is not available. – skipping

  这是因为pip3默认采用https协议获取资源,而ssl模块有点问题,最后找到的解决方法

  1.治标

  通过在~/.pip/pip.conf文件中加入

  trusted-host = 你要信任的url

  不采用https协议获取资源

  2.治本

  把当前的openssl-devel卸载了,然后重新安装一个

  yum remove openssl-devel

  yum install openssl-devel

  在python3.6中的/Modules/Setup 修改了启动配置

#修改结果如下:
# Socket module helper for socket(2)
_socket socketmodule.c timemodule.c
# Socket module helper for SSL support; you must comment out the other
# socket line above, and possibly edit the SSL variable:
#SSL=/usr/local/ssl
_ssl _ssl.c \
-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
-L$(SSL)/lib -lssl -lcrypto

  然后重新编译

esrally使用

通过esrally configure配置,根据提示来就行,如下图所示

使用本地es集群测试

--pipeline=benchmark-only

es官网下载

--pipeline=from-distribution

测试数据集,默认是geonames

--track=geonames

使用离线的数据集

--offline

常用命令组合

//第一次压测需要从远端下载数据集

esrally --pipeline=benchmark-only --target-hosts=host:9200 --distribution-version=5.2.2(本人用的5.2.2)

//之后数据集不变的话,直接使用本地数据集

esrally --pipeline=benchmark-only --target-hosts=host:9200 --distribution-version=5.2.2 --offline

注意

es集群必须处理green状态,否则会被禁止race

默认的压测数据的压测配置在 /root/.rally/benchmarks/tracks/default/geonames/track.json

默认压测的内容比较多,可以自定义压测内容,比如数据导入,数据搜索,统计搜索等,都是些es支持的命令

也有类似jmeter的压测配置,比如并发量,迭代次数,额定吞吐量,调度时间等

下图是esrally的压测的部分结果

总结

esrally是官方做压测的开源工具,权威程度不言而喻,但是有点复杂,相当于又学了一个部署复杂版的jmeter。所以如果单单只是想测试ES搜索性能的话,建议使用jmeter。

参考资料

//官网的rally教程

https://esrally.readthedocs.io/en/latest/

//官网的rally教程,关于压测内容的详细说明

http://esrally.readthedocs.io/en/0.5.3/track.html#search

//网友对rally的总结

http://m.blog.csdn.net/article/details?id=56291834

最新文章

  1. 深入理解Java:注解
  2. ecshop 变量表
  3. 覆盖的面积(HDU 1255 线段树)
  4. 对list集合中的对象按照对象的某一属性进行排序
  5. Codeforces Round #358 (Div. 2)B. Alyona and Mex
  6. Matlab设置网格线密度(坐标精度)
  7. jQuery 获取父元素、子元素、同级元素
  8. UITabBarController 标签栏控制器
  9. HDU 1870 愚人节的礼物
  10. javascript的一个简易利率计算器+js图像显示 代码
  11. js(javascript) 继承的5种实现方式
  12. P2757 导弹的召唤(数据加强)
  13. MySQL: Integer & String types
  14. Java8内存模型—永久代(PermGen)和元空间(Metaspace)
  15. Linux 出现telnet: 127.0.0.1: Connection refused错误解决办法
  16. 文件下载的ie11兼容性优化
  17. [转]python中的正则表达式(re模块)
  18. appium的兼容问题
  19. 混合表单文件上传到数据库(基于TOMCAT)
  20. Docker容器进入的4种方式(转)

热门文章

  1. 如何在RecyclerView上面实现"拖放"和"滑动删除"-2
  2. CSS前端开发学习总结、一
  3. oracle物理视图(转)
  4. 传输层TCP协议
  5. MySQL学习笔记(二)—查询
  6. Android IPC机制全解析<二>
  7. CTF 字符统计1
  8. 使用VsCode编写和调试.NET Core项目
  9. Load 数据1
  10. npm详解