AWS RDS接続の制限


45

RDSサーバーは、最大40の接続で起動します 。Magento1.9を使用している次のドキュメント
あるように、ある時点で最大数に達すると、Webサイトが停止します。
この問題を解決するための推奨される方法はありますか?

私の理解から、RDSサーバーへの2つのWebサーバー接続がある場合は、2つ以上のRDS接続が必要ではありません。


2
「私の理解から、RDSサーバーへの2つのWebサーバー接続がある場合は、2つ以上のRDS接続が必要ではありません。」 それは間違った理解です。通常、ワーカープロセスまたはスレッドごとに1つの接続です。
マイケル-sqlbot

@ Michael-sqlbotに感謝します。はい、私はこれを誤解していますが、確認したかったです。しかし、なぜRDSに40の接続が来ると、他の接続を拒否し、他の接続が閉じられるまで到達できないのですか?
アラーBadran

これは、max_connectionsパラメーターによる設計によるものです。ほとんどのワークロードでは、安全に保守的なデフォルト値であるため、安全に増やすことができますが、これらのスパイクの原因を調査する必要があります。
マイケル-sqlbot

回答:


65

AWS RDS max_connections制限変数はインスタンスタイプに基づいているため、RDSをアップグレードしたり、レプリカを追加したりできます。

max_connections制限のあるRDSタイプ:

  • t2.micro 66
  • t2.small 150
  • m3.medium 296
  • t2.medium 312
  • m3.large 609
  • t2.large 648
  • m4.large 648
  • m3.xlarge 1237
  • r3.large 1258
  • m4.xlarge 1320
  • m2.xlarge 1412
  • m3.2xlarge 2492
  • r3.xlarge 2540

2015年のAWS RDS MySQLインスタンスサイズでのmax_connectionsによる参照

更新2017-07

現在のRDS MySQLのmax_connections設定はデフォルトです。512MBの RAMでt2.micro{DBInstanceClassMemory/12582880}使用する場合、max_connectionsは(512 * 1024 * 1024)/ 12582880〜= 40などになります。


各Webサーバーは、WebサーバーからのSQL要求に依存するRDSへの多くの接続を持つことができます。


私はこれを知っていますが、40接続に達したときにサーバーが応答しませんか?:このチェックdrive.google.com/file/d/0B-_uggt0MBYOZElEMEItWDIwUEk/...
アラーBadran

1
RDSパラメータグループをチェックします{DBInstanceClassMemory/12582880}。max_connections はデフォルトでです。したがって、512MBのRAMでt2.microを使用すると、max_connectionsが(512*1024*1024)/12582880 = 40.6940の最大接続を説明できる可能性があります。
ニック・ツァイ

2
commandでそのRDS MySQLを照会することにより、値を確認できますshow variables like 'max_connections';
ニック・ツァイ

1
新しいparameter group値を作成max_connections し、値を必要な値に変更できます。これは、RDSインスタンスの新しい接続制限になります。
バックスラッシュ

1
この回答は、2019年にまで保持しているあなたは常に行うことによって自分自身を確認することができますSHOW VARIABLES WHERE Variable_name='max_connections'
デイブ・スタイン

30

max_connectionsデフォルトのパラメータポリシーを更新するか、新しいパラメータポリシーを作成することにより、値を変更できます。後者を使用することをお勧めします。

  • RDSに移動
  • パラメータグループ
  • 新しいパラメーターグループを作成します(AWSはすべてをデフォルトのままにします)
  • max_connections値を検索
  • 使用する値を変更する
  • RDSインスタンスに移動して変更します
  • 作成された新しいパラメーターグループを選択してインスタンスを再起動するか、次のメンテナンスウィンドウでAWSに再起動させます

お役に立てれば!


2
<3これは受け入れられる答えでなければなりません
-bbozo

2
私は1000年にMAX_CONNECTIONSを設定していても、RDSまだ唯一のマイクロインスタンス上の100個の最大接続許可
ミゲル・モタの

1

サーバー構成の最大接続数を増やすと問題が解決する場合がありますが、アプリケーションの構成と実装の検証を検討する必要があります。

私はMagentoの専​​門家ではありませんが、最近取り組んでいるプロジェクトで同様の問題が発生したため、使用しているフレームワークのデフォルトの実装がデータベースへのすべての呼び出しとの接続を作成していることに気付きました。

それは問題を引き起こさないかもしれませんが、より多くの訪問者またはデータベース集中型で複数の接続で実行できるタスクがある場合、「TOO MANY CONNECTIONS」エラーでサーバーがクラッシュするのを防ぐ最善の方法はデータベースを実装することです接続プール。

これにより、サーバーが処理できる接続をアプリケーションが作成することを防ぎ、アプリケーションがユーザーにクラッシュすることを防ぎます。接続プールは、接続が利用可能になるまでデータベースへのアクセス要求のキューを保持し、ユーザー要求の処理を続行できるようにします。

マルチスレッドのシナリオでは、接続プールはスレッドセーフである必要があることに注意してください。


1

(MySQLクライアントを使用して)RDSインスタンスにログインし、次のクエリを実行します。

SHOW VARIABLES LIKE 'max_connections';

1

Postgresql t3-instancesの実際の情報(default.postgres10パラメーターグループ):

  • db.t3.micro-112 max_connections
  • db.t3.small-225 max_connections
  • db.t3.medium-450 max_connections
  • db.t3.large-901 max_connections
  • db.t3.xlarge-1802 max_connections
  • db.t3.2xlarge-3604 max_connections

default.postgres9とdefault.postgres11でも同様です


0

最大40接続ではなく、最大40 RDSインスタンスです。ほとんどの場合、説明に基づいて1つのインスタンスのみを使用しています。

データベースとのセッションが開かれるたびに新しい接続が作成されるため、RDSサーバーへの数千の接続が可能です。おそらくパフォーマンスの制約に直面しており、RDSインスタンスを大きくすることを検討する必要があります。


ありがとう、@ jason次の情報があります。40接続に達すると、RDSは他の接続が閉じるまで応答しません。r3.xlarge RDSインスタンスがあります。ここでは、こののスクリーンショットです:drive.google.com/file/d/0B-_uggt0MBYOZElEMEItWDIwUEk/... 私たちは、接続の数が多いアイドルCPUを持っている
アラーBadran

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