首页 > 代码库 > Elasticsearch自定义脚本完成性能测试

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
如果感觉本文对您有帮助,请点击‘顶’支持一下,您的支持是我坚持写作最大的动力,谢谢!

<script type="text/javascript"> $(function () { $(‘pre.prettyprint code‘).each(function () { var lines = $(this).text().split(‘\n‘).length; var $numbering = $(‘
    ‘).addClass(‘pre-numbering‘).hide(); $(this).addClass(‘has-numbering‘).parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($(‘
  • ‘).text(i)); }; $numbering.fadeIn(1700); }); }); </script>

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