こんにちは、中の人です。
今回は、WebサーバからKinesisに対してログをPutする時に、Pythonのthreadingを使うことでどの程度速度が早くなるかを試してみます。
環境: t2.micro Amazon Linux
プログラム:WhileでKinesisにPutしている部分に以下を追加しております。
※ プログラムの最初には
start = time.time()
でstartを定義しています。
1 2 3 4 5 6 7 8 9 10 |
global J global SEC while True: J = J + 1 now = time.time() elapsed = now - start elapsedArray = str(elapsed).split(".") if int(elapsedArray[0]) != SEC: print J / int(elapsedArray[0]) SEC = int(elapsedArray[0]) |
最大thread数を引数で指定しております。
なお、tailで監視しているログは4000行/秒以上が増えているファイルが対象となります。
CPU負荷 | 秒間リクエスト数 | |
---|---|---|
1スレッド | 3% | 19.93 req/sec |
2スレッド | 4% | 46.89 req/sec |
5スレッド | 12% | 118.182 req/sec |
10スレッド | 30% | 216.473 req/sec |
20スレッド | 60% | 517.703 req/sec |
40スレッド | 80% | 744.333 req/sec |
70スレッド | 80% | 749.077 req/sec |
100スレッド | 80% | 740.099 req/sec |
上記はt2.microのパフォーマンス検証結果です。
t2クレジットが無くなっていないにも係わらず、40スレッド以降は横ばいとなっております。
横ばいとなっている原因については調査して、分かり次第追記する予定です。
次回はインスタンスサイズを変更して同様のテストを行ってみます。
お楽しみに!