0

私は AWS で 1 つの VPC を購入し、そこで 6 つの MySql データベースを開始しました。それぞれに読み取りレプリカを作成したので、読み取りレプリカでいつでもクエリをすばやく実行できます。

1 日のほとんどの時間、書き込みインスタンス (元のインスタンス) は完全にロードされており、CPU の割合はほぼ 99% です。ただし、読み取りレプリカの CPU 使用率は約 7 ~ 10% ですが、読み取りレプリカに接続するサービスを実行すると、"TOO MANY CONNECTIONS" というエラーが発生することがあります。

私は AWS の専門家ではありませんが、書き込みレプリカが完全にロードされ、それらが同じ VPC 上にあるために、これが起こっているのでしょうか?

4

1 に答える 1

1

これは、書き込みレプリカが完全にロードされ、それらが同じ VPC 上にあるために発生しますか?

いいえ、そうではありません。これはレプリケーションとは関係ありません。レプリケーションでは、レプリカはマスター上で正確に 1 つの接続としてカウントされますが、レプリケーションはレプリカ自体の接続を消費しません。レプリケーションによる合計ワークロードの強度に関連する接続への影響はありません。

この問題は、単に、RDS インスタンス タイプに基づくパラメーター グループで許可されているよりも多くのクライアントがレプリカに接続していることを意味します。クエリSELECT @@MAX_CONNECTIONS;を使用して、この制限を確認してください。を使用SHOW STATUS LIKE 'THREADS_CONNECTED';して、現在存在する接続の数を確認し、SHOW PROCESSLIST;(管理ユーザーまたはPROCESS特権を保持している任意のユーザーとして) を使用して、これらすべての接続が何を行っているかを確認します。

それらの多くが表示Sleepされ、(現在の状態で費やされた秒数) の値が長い場合Time、問題は、使用後または不要になったときにアプリケーションが接続を適切に閉じるのではなく、なんらかの方法で接続を放棄していることです。

于 2017-04-02T16:51:43.753 に答える