AWS RDSデータベースに必要なIOPの数を確認するにはどうすればよいですか?


14

mysqlデータベースの一部をAWSに移行しています。問題のデータは99%の書き込みで、各行には約1kのvarcharフィールド、datetime、4つのintがあります。

ピーク時に1時間あたり20〜25kのレコードを挿入する必要があります。

現在のデータベースでiostat -hを実行すると、約40 tpsが報告されました。

どのタイプのIOPSが必要かを判断するにはどうすればよいですか?

回答:


11

テストする必要があります。

エンベロープ計算の後ろに戻って、挿入ごとのI / Oの数を概算し、1秒あたりのトランザクション数で乗算し、バッファールームなどに追加できますが、テストする方がはるかに簡単です。

最も簡単な方法は、最良の推測値を割り当て、戻って実際のテストに合わせて増減することです。これは、クラウドベースの環境を使用する贅沢の1つです。ハードウェアの変更は資本コストが低く、そのような変更には通常、構成の更新のみが必要です。EBSボリュームでは、IOPSの数を増やすだけではなく、ボリュームのサイズも拡大する必要があります1。いつでも新しいボリュームを作成して、データをコピーできます。ある程度のダウンタイムが発生しますが、データがそれほど大きくない場合、それは生のコピーだろうとして、それはあまりすべきではありません。

必要なI / Oの数を推測します。繰り返しますが、詳細はインデックスの数とトラフィックフローがスムーズかスパイクかによって決まるため、推測に過ぎません。25K TX /時間では、〜7 TX /秒になります。各行のサイズは、単一のI / O(4K)のサイズよりも小さいため、特に重要ではありません。各トランザクションは、1〜5 IOP(プライマリインサートとカップルインデックスツリーインサート)の間のどこかで実行されるため、〜35 / sとしましょう。

最低限の100 IOPSから始めて、必要に応じてスケールアップすると言います。


1
ところで、これのフォローアップとして、300GBのデータベースをセットアップしました。これは、最低1000 IOPSを意味しました。RDSで約6か月稼働した後、I / Oの問題により0件のインシデントが発生しました。おそらく行き過ぎですが、あなたが得ることができるのと同じくらい発射して、忘れてください。
クリス14

負荷に基づいて-プロビジョニングされたIOPは必要ありません。合計2500〜3500を超えるIOPが必要になる場合を除き、標準ストレージは300 GBで済みます(EBSストライピングのため)。
ロス

7

基本的なiostat(iostat -h)ツールを使用して、現在使用しているiopsの数を把握しました。それから、その負荷量の4倍未満の場合に使用する量を推定し、その量を使用しました。私にとっては780 IOPSになったので、800 IOPSになりました。


iostat -hは約40 tpsを報告していますが、これは40 iopsに相当しますか?これは、@ sehropeが計算した数値と一致します。
クリス

1
そのとおりです。
マークD

0

iostatを使用して、アプリケーションが実行しているIOPSの量を判断します。iostatはこれをtpsとして報告します。KB / tは、転送量が256 KiBのチャンクサイズより小さいかどうかを判断するのに役立ちます。iostatを1秒の待機時間、つまりiostat -w 1で実行します。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.