铭毅天下

【死磕Elasticsearch知识星球】http://t.cn/RmwM3N9;【Elasticsearch微信公众号】铭毅天下;【死磕ElasticsearchQQ群】626036393...

Elasticsearch自定义脚本完成性能测试

1、ES性能测试

要求:
1)完成ES并发100次性能测试;
2)统计得出访问时间结果值。

2、脚本实现

#!/bin/sh

KEYWORDS_TXT="./keywords.txt"
cat /dev/null > ./rst.txt

echo "beginTime=`date`"

cat $KEYWORDS_TXT | while read line
do
echo "line=$line"
echo "curl -XGET http://100.10.11.130:9200/shx_info_index/shx_info_type/_search -d'
{
  \"query\" : {
  \"query_string\" : {
  \"default_field\" : \"company_name\",
  \"query\" : \"$line\"
  }
  }
}' >> ./rst.txt 2>&1 & " >> ./sql.txt

icnt=$((icnt+1));
echo "icnt ="$icnt;
done;

解读:
1)以上脚本实现了对所以的字段的查询操作;
2)每次的操作都是读配置的;
3)未避免读配置的时间,可将整个post请求操作先存储到另一个脚本,再一起执行。

2、技术核心点小结

核心点一:

&的目的:实现并发测试,否则就是串行执行任务。
结果导出再执行即可。

核心点二:

时间差计算如下:
1)开始时间:

current=`date "+%Y-%m-%d %H:%M:%S"`
timeStamp=`date -d "$current" +%s`
beginTimeStamp=$((timeStamp*1000+`date "+%N"`/1000000)) #将current转换为时间戳,精确到毫秒
#echo "beginTime=$currentTimeStamp"
echo "beginTime=`date`"

2)结束时间及时间差(历时时间):

wait
current=`date "+%Y-%m-%d %H:%M:%S"`
timeStamp=`date -d "$current" +%s`
endTimeStamp=$((timeStamp*1000+`date "+%N"`/1000000)) #将current转换为时间戳,精确到毫秒
#echo "endTime=$currentTimeStamp"
echo "endTime=`date`"
timeSpan=`expr $endTimeStamp - $beginTimeStamp` #时间戳求差值。
echo "100次并发测试总耗时=$timeSpan 毫秒"

核心点三:

wait [作业指示或进程号]

1.等待作业号或者进程号制定的进程退出,返回最后一个作业或进程的退出状态状态。如果没有制定参数,则等待所有子进程的退出,其退出状态为0.

2.如果是shell中等待使用wait,则不会等待调用函数中子任务。在函数中使用wait,则只等待函数中启动的后台子任务。

3.在shell中使用wait命令,相当于高级语言里的多线程同步。

2017年5月15日 23:48 于家中床前

作者:铭毅天下
转载请标明出处,原文地址:
http://blog.csdn.net/laoyang360/article/details/72231924
如果感觉本文对您有帮助,请点击‘顶’支持一下,您的支持是我坚持写作最大的动力,谢谢!

阅读更多

扫码向博主提问

去开通我的Chat快问

wojiushiwo987

博客专家

和你一起,死磕ELK Stack!
  • 擅长领域:
  • ES
  • ELK
  • bigdata
版权声明:本文为博主原创文章,未经博主允许不得转载。转载请务必加上原作者:铭毅天下,原文地址:blog.csdn.net/laoyang360 https://blog.csdn.net/wojiushiwo987/article/details/72231924
所属专栏: 深入详解Elasticsearch
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

Elasticsearch自定义脚本完成性能测试

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭