web-dev-qa-db-ja.com

AWS RDSプロビジョンドIOPSは本当に価値がありますか?

私が理解しているように、RDSプロビジョンドIOPSは標準のI/Oレートに比べて非常に高価です。

東京地域では、P-IOPSレートは0.15 $/GB、標準展開の場合は0.12 $/IOPです。 ( マルチAZ配置の価格を2倍に...

P-IOPSの場合、最小必要ストレージは100GB、IOPは1000です。したがって、P-IOPSの開始コストは、インスタンスの価格を除くと135ドルです。

私の場合、P-IOPSを使用すると、標準のI/Oレートを使用する場合よりも約100倍のコストがかかります。

これは非常に主観的な質問かもしれませんが、意見を述べてください。

RDS P-IOPS用に最も最適化されたデータベースでは、パフォーマンスに価格の価値はありますか?

または

AWSサイト は、P-IOPSがパフォーマンスにどのように役立つかについての洞察を提供します。実際のベンチマークはありますか?

自己回答

ZeroSkillzが書いた答えに加えて、私はさらに調査を行いました。ただし、私はデータベースベンチマークの読み取りの専門家ではないことに注意してください。また、ベンチマークと回答はEBSに基づいていました。

" 記事 " Rodrigo Campos "によると、パフォーマンスは実際に大幅に向上します。

1000 IOPSから2000 IOPSまで、読み取り/書き込み(ランダム読み取り/書き込みを含む)のパフォーマンスは2倍になります。 zeroSkillzが言ったことから、標準EBSブロックは約100 IOPSを提供します。 100 IOPSが1000 IOPS(P-IOPS展開の最小IOPS)に達するときのパフォーマンスの改善を想像してください。

結論

ベンチマークによると、パフォーマンス/価格は妥当なようです。パフォーマンスが重要な状況では、100倍以上の料金がかかる場合でも、一部の人々や企業はP-IOPSを選択すべきだと思います。

ただし、私が中小企業の金融コンサルタントだった場合、パフォーマンス/価格がP-IOPSに一致するまで、RDSインスタンスを徐々にスケールアップします(CPU、メモリなど)。

53
Jee Seok Yoon

OK。これは、割り当てられたストレージのサイズやセットアップの他の詳細については言及していないため、悪い質問です。 RDSを使用しますが、RDSにはプラスとマイナスがあります。まず、RDSで一時ストレージデバイスを使用することはできません。 RDSサービスを使用している場合、ストレージデバイスに直接アクセスすることさえできません。

つまり、RDSのストレージメディアはAmazonのEBSのバリアントに基づいていると推定されます。標準IOPSのパフォーマンスはボリュームのサイズに依存し、100GBを超えるストレージはEBSボリュームを「ストライプ」し始めると述べる多くのソースがあります。これにより、読み取りと書き込みの両方で、平均的なケースデータアクセスが向上します。

現在、約300GBのストレージ割り当てを実行しており、数時間で約85%の時間で2kの書き込みIOPと1kのIOPを取得できます。実際に確認できるように、datadogを使用してこれをログに記録します。最大4kの書き込みIOPのバーストを見てきましたが、そのように持続するものはありませんでした。

アプリケーション側から見た主な症状は、書き込みのIOPSが十分でない場合のロック競合です。アプリケーションログでこれらの数と頻度を取得すると、標準RDSのIOPSを使い果たす兆候がわかります。 datadogなどのサービスを使用してIOPSを監視することもできます。

プロビジョニングされたIOPSの問題は、費用対効果を高めるために、書き込み/読み取りの定常状態のボリュームを想定していることです。これが現実的なユースケースになることはほとんどなく、Amazonが修正するクラウドサービスを開始した理由です。 P-IOPSで得られる唯一の保証は、最大スループット機能が確保されることです。それを使用しない場合、あなたはまだそれを支払います。

レプリカの実行に問題がない場合は、読み取り専用レプリカをNON-RDSインスタンスとして実行し、通常のEC2インスタンスに配置することをお勧めします。レプリカを自分で管理することで、はるかに安い価格で優れた読み取りIOPSを取得できます。さらに、stunnelを使用してAWSの外部にレプリカをセットアップし、SSDドライブをプライマリブロックデバイスとして設定すると、レポートシステムの読み取り速度が途方もなく高くなります。これは、RDSから取得する文字列の100倍高速です。

これが実世界の詳細を提供するのに役立つことを願っています。要するに、私の意見では、一定レベル(または任意の時点)で一定レベルのスループット機能を確保する必要がある(またはアプリケーションが失敗する)場合を除き、readed-write splitting with read- -replicas memcacheなど.

27
Ross

だから、私はちょうどAmazonシステムエンジニアとの電話を降りたところ、彼はこの質問に関連する興味深い洞察をいくつか持っていました。 (つまり、これは中古の知識です。)

標準EBSブロックはバーストトラフィックを適切に処理できますが、最終的には約100 iopsに減少します。このエンジニアが提案したいくつかの選択肢がありました。

  1. 一部のお客様は、複数の小さなEBSブロックを使用してストライプします。これにより、IOPSが改善され、最も費用対効果が高くなります。 EBSはバックグラウンドでミラーリングされるため、ミラーリングについて心配する必要はありません。

  2. 一部のお客様は、EC2インスタンスで一時ストレージを使用しています。 (またはRDSインスタンス)および耐久性を「保証」するために複数のスレーブを持っています。一時ストレージはローカルストレージであり、EBSよりもはるかに高速です。 SSDでプロビジョニングされたEC2インスタンスを使用することもできます。

  3. 一部のお客様は、プロビジョニングされたIOPSまたはSSD一時ストレージを使用するようにマスターを構成し、スレーブに標準EBSストレージを使用します。期待されるパフォーマンスは良好ですが、フェイルオーバーのパフォーマンスは低下します(ただし、まだ利用可能です)

とにかく、これらの戦略のいずれかを使用することに決めた場合、重要な手順を忘れていないことを確認するためにAmazonに再確認します。前にも言ったように、これは間接的な知識です。

29
zeroSkillz