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

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

时间: 2025-01-04 10:07:51

Elasticsearch自定义脚本完成性能测试的相关文章

ArcMap自定义脚本工具制作

原文 ArcMap自定义脚本工具制作 在制图的前期,一般需要做一些数据的整理,如图层合并.裁剪等工作.虽然在ArcMap中也有提供对应的工具,但使用起来需要点技巧.如批量裁剪,虽然可以实现,但出来的结果会重命名为[图层名]_clip,这样对于配置好整个区域的mxd,需要单独裁剪部分范围数据非常不友好,以为后续工作意味着需要单独给裁剪出来的数据重命名,删除掉后缀_clip才可以统一设置数据源. 解决这个问题其实可以很快速的编写python脚本去实现.但脚本对于一般人来说比较麻烦,每次使用都需要调整

elasticsearch 自定义_id

elasticsearch 自定义ID: curl -s -XPUT localhost:9200/web -d ' { "mappings": { "blog": { "_id": { "path": "uuid" }, "properties": { "title": { "type": "string", "in

实战:自定义脚本启动mysql-mysql 5.6.19

根据工作环境,自定义一个mysql启动脚本 ---1.保存为/usr/local/mysql/scripts/mysql_env.ini #set mysql init variablesMYSQL_USER=system #mysql的用户名MYSQL_PASS='password' #mysql的登录用户密码 #check input parameter or noif [ $# -ne 1 ] ; then #判断输入的参数个数echo "mysql port is 3306"M

实战:自定义脚本关闭mysql-mysql 5.6.19

根据工作环境,自定义一个mysql关闭脚本 ---1.保存为/usr/local/mysql/scripts/mysql_env.ini #set mysql init variablesMYSQL_USER=system   #mysql的用户名MYSQL_PASS='password'  #mysql的登录用户密码 #check input parameter or noif [ $# -ne 1 ] ; then     #判断输入的参数个数 echo "mysql port is 330

L15.3 zabbix自定义脚本执行与报警配置(辅助5.4)

zabbix脚本报警配置 注:此文是5.4配置的一些关键配置说明,非完整步骤 zabbix-agent要配置为支持执行远程命令: vim /etc/zabbix/zabbix_agentd.conf EnableRemoteCommands=1 #Defaults    requiretty 注意 (1) 如果用到以其它用户身份执行命令的话,那么命令本身要以sudo方式运行: sudo /etc/rc.d/init.d/httpd restart (2) 在各agent上的sudoers文件:

zabbix 自定义脚本监控配置之网卡

注:要添加自定义脚本监控,必须升级zabbix agent版本至2.0.0以上, 一:配置步骤 1. 完成自定义监控脚本的编写(windows或linux脚本) 脚本要求: (1)既然是监控,那必然要有输出结果值(字符串,数字皆可) (2)必须要求zabbix用户有执行权限,当然可以直接设置所有用户都有执行权限(chmod 777 脚本文件) (3)若脚本需要传入参数,按照参数传入的顺序,在脚本中可用$1-$9来引用传入的参数 2 找到zabbix agent的配置文件zabbix_agentd

Cacti自定义脚本,监测Docker信息(Script/Command方式)

一 环境背景 监控主机A:192.168.24.231:被监控主机B:192.168.24.233 A/B主机,通过公私钥建立ssh连接 [操作B主机时不需要输入密码,详见笔记:http://app.yinxiang.com/l/ACQDOta4_v1IEr_WI6aufZVFEux9o1ou6ts/] 二 监控目标及测试结果 主机 A监测主机B上以下信息: 正在运行的容器数量 (黄) 已经定义的容器数量 (绿) 崩溃的容器数量        (红) 三 整体步骤 B主机采集docker容器信息

Zabbix的通知功能以及自定义脚本告警

本节内容: Zabbix的通知功能 定义接收告警的用户 定义Action Zabbix自定义脚本发送报警邮件 一.Zabbix的通知功能 在配置好监控项和触发器之后,一旦正常工作中的某触发器状态发生改变,一般意味着有异常情况发生,此时通常需要采取一定的动作(action),如告警或者执行远程命令. 实现zabbix的通知功能,一般需要两个步骤:定义所需的"媒介"和配置一个"动作". 媒介类型有:E-mail,SMS,Jabber和自定义的通知脚本.我这里就使用E-m

zabbix 获取不到自定义脚本的值解决

agent端: zabbix 自定义脚本 [[email protected] script]# cat check_ping.sh #!/bin/bash result=$(/usr/local/nagios/libexec/check_icmp -s $1 $2) a=$(echo $result | awk '{print $1}') if [ $a == "OK" ];then echo "0000" else echo "2222" f