Amazon Kinesis編~PythonのThreadを使ったパフォーマンス検証~

Pocket

こんにちは、中の人です。

前回の記事『Amazon Kinesis編~PythonのThreadを使ったパフォーマンス検証~』では、t2.microインスタンスをWebサーバからKinesisに対してログをPutする時に、Pythonのthreadingを使うことでどれくらい速度が早くなるかを試してみました。
さて、今回はインスタンスサイズを変えるとどうなるか見てみましょう。

[環境]
1. t2.micro
2. m3.medium
3. c3.large

プログラム等については前回と同じとなります。
tailで監視しているログは4000行/秒以上が増えているファイルが対象となります。

1. t2.micro

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

2. m3.medium

CPU負荷 秒間リクエスト数
1スレッド 2% 17.153 req/sec
2スレッド 3% 36.097 req/sec
10スレッド 25% 356.956 req/sec
20スレッド 38% 376.262 req/sec
40スレッド 50% 376.262 req/sec
70スレッド 50% 361.869 req/sec
100スレッド 50% 351.6 req/sec

3. c3.large

CPU負荷 秒間リクエスト数
1スレッド 1.5% 19.01 req/sec
2スレッド 3% 37.948 req/sec
10スレッド 25% 240.25 req/sec
20スレッド 41% 286.243 req/sec
40スレッド 45% 303.956 req/sec
70スレッド 45% 302.368 req/sec
100スレッド 45% 296.687 req/sec
200 スレッド 46% 292.831req/sec
500スレッド 47% 289.797 req/sec
1000スレッド 46% 240.948 req/sec

※1回60秒以上、3回計測の平均値

インスタンスサイズを上げるほど負荷は下がるものの、何故かパフォーマンスは早く頭打ちとなってしまうことが確認できました。
また、最大1000スレッドまで確認しましたが、一瞬パフォーマンスは上がるものの一定の値に落ち着きます。

追加検証を行った所、パフォーマンスの最大値となっている点はtail部分となっておりました。
この部分を改善することで、より大きなパフォーマンスを出すことが出来ると思います。
※解決方法がわかった段階で配信します。

次回もお楽しみに!