#はじめに
Aurora Serverlessへ接続するアプリで「Too many connections」というエラーが頻発したので接続数について調べたことのメモ。
#接続数はいくつに設定されているか
これはパラメータグループで確認できる。以下のようにキャパシティー(ACU)に応じて変化する設定になっている。
各ACUごとの接続数は以下の通り
1ACU:90
2ACU:180
4ACU:270
8ACU:1000
(参考:https://qiita.com/kaba-chan/items/bfd1d8d333d277d6e11a)
現状ACUの最大値を1に設定しているので、最大90接続までということになる。
#ACUに対する接続数を増やすことができるか
例えば以下のように設定すれば1ACUでも180の接続を許可できるのではないか
GREATEST({log(DBInstanceClassMemory/805306368)*90},{log(DBInstanceClassMemory/8187281408)*2000})
AWSのサポートに問い合わせてみたところ、ACUを増やす以外ないと回答あり。
質問
max_connection のパラメータをデフォルトより増やし、かつスケールさせる設定としたい。
回答
max_connections を大きくするには現状 ACU を大きくとっていただくほかない状況であり、お客さま>ご想定のようにデフォルトより大きくした状態でかつスケールさせるといった設定値には対応いたしておりません。
#接続数が足りない場合ACUは増えるか
ACUの最大値を増やしたとして、接続数だけが足りない場合にACUは増えてくれるのか。
マニュアルには以下のように記載されている。
Aurora Serverless DB クラスターに割り当てられたキャパシティーは、クライアントアプリケーションで生成される負荷(CPU 使用率と接続数)に基づいてシームレスにスケールアップ/ダウンされます。また、DB クラスターの容量設定で、一時停止と再開のオプションを有効にすると、接続がないときに容量を 0 にスケールできます。詳細については、「Aurora Serverless の自動的な一時停止と再開」を参照してください。
接続数が足りなければスケールアップするように見えるが、詳細な条件は公開されてない模様。