AmazonでNoSQLデータベースのパフォーマンスを誤ってテストする方法

この投稿では、私の失敗したパフォーマンステストについて説明し 、Amazon EC2コンテナーに埋め込まれたLMDBからのいくつか誤った ARDBパフォーマンスの数字も示しています。

足はどこから成長しますか


このプロジェクトでは、データベースに数千の行を可能な限り短時間で書き込むことが必要になる場合があると考えています。 もちろん、少し掘り下げてLMDBが気に入ったので、メインデータベースをロードしたくありません。 ARDBは、Redisとして最後に到達できるようにするラッパーです

残念ながら、Amazon ec2でこの奇跡のパフォーマンステストを見つけることができなかったので、自分で調べてみることにしました。

免責事項


投稿はNoSQLデータベースの選択に関するものではありません... 1つのデータベースのみが異なる構成でテストされました

設備と設置


4つの構成で実行されたテスト


テスト用のすべてのコンポーネントはソースからコンパイルされました。

典型的なインストールシナリオ:

yum install git yum install gcc git checkout git://smth cd smth make 

間違い


主な間違い-計画はありませんでした...アイデアだけがありました。 また、アクティブな使用の開始時にほとんどのサービスがバーストするAmazonの機能を考慮しなかったため、パフォーマンスが低下します。これは以下に適用されます。


インスタンスの誤った選択の結果-テストされたサーバーのCPUが完全にロードされていないことがよくありました

理想的には、実際の使用方法を模倣する価値がありますが、いつものように時間がありません...

これらのすべての点を除いて、以下の図はすべて、あくまでも指標であり、合成紳士です。

測定


小さなデータセット


データセットは控えめで、待つことは望んでいませんでしたが、見積もりを得るために-はい、望みました。

キーの数:1,000,000キー(データベース内の650kエントリを読み取ります)
顧客:50
レコードサイズ:3,000バイト

いくつかの連続したコマンドでテスト済み:

 #   ./redis-benchmark -n 1000000 -r 1000000 -h ec2-xx-xx-xx-xx.eu-west-2.compute.amazonaws.com -p 16379 -t set -d 3000 #    100k ./redis-benchmark -n 1000000 -r 100000 -h ec2-xx-xx-xx-xx.eu-west-2.compute.amazonaws.com -p 16379 -t get -d 3000 #    1m ./redis-benchmark -n 1000000 -r 1000000 -h ec2-xx-xx-xx-xx.eu-west-2.compute.amazonaws.com -p 16379 -t get -d 3000 

特徴t2.microi3.large
GP2IO1
3000 PIOPS6000 PIOPS
サーバー価格10ドル10ドル10ドル130ドル
ディスク価格1ドル9ドル**18ドル**1ドル
PIOPS価格-195ドル390ドル-
価格、合計11ドル214ドル418ドル131ドル
CPU10-100%10-100%10-100%200%
RAM1GB1GB1GB16GB
IOPS100、
バーストで最大300,000
3,0006,000100,000
記録、一定の負荷700(ディスク調整済み)
1,700(CPUスロットル)
1,3002,30027,000 ***
記録、バースト2,70010,000> 10,000
100kセットからの読み取り、安定した負荷<4,00011,000 *21,000 *
100kセットからの読み取り、バースト35,000
1mセットからの読み取り、安定した負荷<4,0003,0005,00043,000 *、 ***
1mセットからの読み取り、バースト6,000
*すべてのデータはRAMに配置されます
** Amazonの制限、ギガバイトあたり50 PIOPS以下
***「以上」と読みます。これらのテストのボトルネックは、redis-benchmarkが起動されたサーバーからの伝送速度です。

i3.large


ここでは、さまざまなサイズのデータ​​ベースでテストが行​​われました
特徴DBサイズ、キー
10万1m10m30m
読み取り速度41,40742,97743,22017,286 *
読み取り遅延、最大1ミリ秒60.14%62.34%60.27%2.88%
読み取りレイテンシ、最大5ms99.97%100.00%**99.99%99.16%
最大読み取り遅延6ms **3ms **13ms **14ms **
書き込み速度34,83​​126,91115,967 *10,353 *
記録遅延、最大1ミリ秒11.96%8.66%5.22%2.88%
記録遅延、最大5ms99.53%97.50%96.15%82.65%
記録遅延、最大50ミリ秒100%99.99%99.74%99.68%
記録遅延、最大100ミリ秒100%**99.99%99.84%99.75%
記録遅延、最大300ミリ秒100%**99.99%99.94%99.87%
録音遅延、最大500ミリ秒100%**100%99.96%99.91%
最大記録遅延17ms **604ms3104ms5059ms
*「以下」と読みます。これらのテストのボトルネックは、redis-benchmarkが起動されたサーバーからの転送速度です。
**明確な理由で正確に200ミリ秒間遅延した結果がスローされた; Amazonのせいだ

結論



ありがとう、私の時間を無駄にした誰かに役立つことを願っています。

Source: https://habr.com/ru/post/J341778/


All Articles