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:


&の目的:同時テストを実現し、そうでなければシリアルでタスクを実行します.結果をエクスポートして実行すればよい.

コアポイント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  "

コアポイント3:


wait[ジョブ指示またはプロセス番号]
1.ジョブ番号またはプロセス番号が作成されたプロセスの終了を待ち、最後のジョブまたはプロセスの終了ステータスを返します.パラメータが設定されていない場合、すべてのサブプロセスの終了が待機し、その終了状態は0である.
2.shellでwaitの使用を待機している場合、呼び出し関数のサブタスクは待機しません.関数でwaitを使用すると、関数で起動されるバックグラウンドサブタスクのみが待機します.
3.shellでwaitコマンドを使用すると、高度な言語でのマルチスレッド同期に相当します.
2017年5月15日23:48自宅ベッド前
作者:铭毅天下転載出典を明記してください、原文の住所:http://blog.csdn.net/laoyang360/article/details/72231924もし本文があなたに役に立つと感じたら、「トップ」をクリックして支持してください.あなたの支持は私が書くことを堅持する最大の動力です.ありがとうございます.