3

私は、クラスタをバックアップするメインインスタンスとバランスをとるための2つの読み取りレプリカの3つのインスタンスでMySQLを実行するAmazon Aurora Databaseクラスタを作成しました。しかし、クラスタは読み込みとのバランスを取っていないようです。私は1つのレプリカが700以上を管理しています/秒は99.75%以上でCPUを最大化しますが、他のレプリカは1秒間に1つの選択で4%のCPU使用率で事実上何もしません。メインクラスタインスタンス自体は、レプリカの読み込み中に同時に書き込まれるため、CPU使用率は33%です。レプリカ間の遅延時間は20ミリ秒未満です。私のアプリケーションは、クラスタの読み取り専用エンドポイントを照会していますが、バランスが取れていないようです。なぜこれが起こっているのか、なぜレプリカがそのような高いCPU使用率にあるのか、誰にも分かりませんか?それに対して実行されたクエリは、いかなる手段によっても複雑ではありません。Amazon Aurora DBクラスタが正しく自動バランシングされない

+0

これはおそらく特定のコーディングの問題ではないため、スタックオーバーフローに適した質問ではありません。 AWSインフラストラクチャの質問については、https://serverfault.comまたはhttps://dba.stackexchange.com –

+1

を試してください。それでは、私はここでAuroraに関する質問に答えました:https://stackoverflow.com/questions/46383763/optimize- write-performance-for-aws-aurora-instance/46384196#46384196とOPによると、二次インデックスを削除する私のソリューションは、オーロラのCPU使用率を半減させたという。 –

+0

私は二次インデックスを持っていません。データベースは決して非常に複雑ではありません。そのため、読取りレプリカがCPUパワーを大量に消費している理由と、クラスタが自動バランシングを行っていない理由が混乱します。 –

答えて

0

私はあなたがクラスタのエンドポイントに接続していないと思います。

ロード・バランシング - クラスタ・エンドポイントに接続すると、AuroraはDBクラスタ内のレプリカ間で接続のロード・バランシングを行うことができます。これにより、読み込まれた作業負荷を分散させることができ、各レプリカで使用可能なリソースのより良い性能とより公平な使用につながります。フェールオーバーが発生した場合、接続先のレプリカがプライマリインスタンスに昇格された場合、接続は切断されます。その後、読み取りエンドポイントに再接続して、読み取り照会をクラスター内の他のレプリカに送信することができます。

New Reader Endpoint for Amazon Aurora – Load Balancing & Higher Availability

[EDIT]

は、単一のアプリケーション内でバランスをロードするには、エンドポイントに再接続する必要があります。すべてのクエリで同じ接続を使用する場合は、1つのレプリカだけが応答します。しかし、接続を開くにはコストがかかるので、クエリの実行に時間がかかる場合を除いて、これは大きなメリットはありません。

+0

クラスタの読み取り専用エンドポイントに接続しています。 2つのレプリカ間でdb接続のバランスを取る必要がありますが、一方のレプリカには12の接続があり、もう一方のレプリカにはゼロがありません。私はコードに何か間違っているかもしれないと思っています。おそらく、問い合わせ後に接続を閉じないかもしれません。それを今見ようとする。 –

関連する問題