web-dev-qa-db-ja.com

AWS RDS接続の制限

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

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

54
Alaa Badran

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設定は{DBInstanceClassMemory/12582880}のデフォルトです。512MBのRAMでt2.microを使用すると、max_connectionsは(512 * 1024 * 1024)/ 12582880〜= 40など。


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

74
Nick Tsai

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

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

お役に立てれば!

35
David

Postgresql t3インスタンスの実際の情報(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についても同様です。

6
anton.uspehov

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

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

一部のユーザーには問題が発生しない可能性がありますが、データベースに負荷がかかり、複数の接続で実行できる訪問者やタスクが増えると、 "TOO MANY CONNECTIONS"エラーでサーバーがクラッシュするのを防ぐ最善の方法は、データベースを実装することです接続プール。

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

マルチスレッドのシナリオでは、接続プールはスレッドセーフでなければならないことに注意してください。

1
Uriel Bertoche

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

SHOW VARIABLES LIKE 'max_connections';
1
Shammi Shailaj

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

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

0
jason s