要求: 1)完成 ES 并发 100 次性能测试; 2)统计得出访问时间结果值。
- #!/bin/sh
- KEYWORDS_TXT="./keywords.txt"cat /dev/null > ./rst.txtecho "beginTime=`date`"cat$KEYWORDS_TXT|while readlinedo
- 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 请求操作先存储到另一个脚本,再一起执行。
& 的目的:实现并发测试,否则就是串行执行任务。 结果导出再执行即可。
时间差计算如下: 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