こんにちは、中の人です。
前回の記事『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部分となっておりました。
この部分を改善することで、より大きなパフォーマンスを出すことが出来ると思います。
※解決方法がわかった段階で配信します。
次回もお楽しみに!