Elasticsearch自定义脚本完成性能测试
Posted 铭毅天下
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
如果感觉本文对您有帮助,请点击‘顶’支持一下,您的支持是我坚持写作最大的动力,谢谢!
以上是关于Elasticsearch自定义脚本完成性能测试的主要内容,如果未能解决你的问题,请参考以下文章
Elasticsearch painless脚本中使用java自定义类函数
2022还在使用Mysql进行数据检索?ElasticSearch自定义扩展词库完成检索