私たちのアプリケーションでは、Mysql データベースで EBS パーティションを使用します。最終的に、スペースが不足し、DB 用により大きなパーティションが必要になりました。AWS パネル機能を使用して、以前のスナップショットを使用して新しいボリュームを作成しました。Mysql は停止され、現在は新しいより大きな EBS パーティションを使用しています。ただし、データベースのパフォーマンスが著しく低下しました。理論的には同じMysql構成と同じデータベースを使用しているため、これがどのように発生するかはわかりません. インデックスの再構築やテーブルの再最適化が必要になる可能性はありますか? それが価値があるかどうかはわかりませんが、データベースの速度がさらに低下する可能性があるため、まだ試していません。アプリケーションは 24 時間年中無休で実行されているため、簡単に停止できません。誰でも助けてもらえますか?
1 に答える
新しいEBSボリュームの使用を開始すると(スナップショットから作成されたか、空で作成されたかに関係なく)、各ブロックの初回使用時のパフォーマンスが常に低下します。これは、新しいボリュームを使用するMySQLデータベースのパフォーマンスの低下として現れます。
EBSボリュームを/dev/ nullに「dd」して、すべてのブロックがヒットしたことを確認できます。これを行う方法について私が書いた記事は次のとおりです:http://alestic.com/2010/03/ebs-volume-initialization-from-snapshot
また、データベースがクエリによってメモリに取り込まれるときに、パフォーマンスが低下する可能性があります。これは、任意のプラットフォームでデータベースを再起動するときに発生する標準のIOの問題であり、EC2またはEBSとは関係ありません。
すべてがウォームアップした後もパフォーマンスが遅いままで、ハミングする必要がある場合は、次のようなことを試してみてください。
新しいEBSボリュームを作成し、遅いボリュームがEC2で欠陥のあるハードウェアを使用していた場合に備えてテストします。
現在のハードウェア上のネイバーがネットワークに負荷がかかり、EBS IOに干渉している場合に備えて、EC2インスタンスを新しいハードウェアに移動します。これは、単純な停止/開始によって実行できます(私はここにそれについて書きました:http://alestic.com/2011/02/ec2-move-hardware)
データベースをRAID-0で設定された4〜8個のEBSボリュームに移動します。これは、EBSIOのボラティリティを平滑化しようとする一般的なアプローチです。
AmazonRDSを試すことを検討してください。一部の人々は、インフラストラクチャのこの部分を処理するAmazonでパフォーマンスが向上することに気づきました。
また、大量に書き込まれているEBSボリュームからEBSスナップショットが作成されているときにIOが遅くなる可能性があることにも注意してください。これを軽減するための1つのアプローチは、マスターMySQLデータベースを別のサーバーに複製し、2番目のサーバーのEBSボリュームにスナップショットを作成することです。