WAGBY11 MANUAL / 26
DB接続プールと待ち時間を設定する
DBへの接続を再利用する接続プールについて、最大接続数、維持する未使用接続数、接続を待つ時間などを設定できます。利用規模とDB側の接続上限に合わせて調整します。
最終更新日:
1. このページで伝える機能
DBへの接続を再利用する接続プールについて、最大接続数、維持する未使用接続数、接続を待つ時間などを設定できます。利用規模とDB側の接続上限に合わせて調整します。
2. Wagby11で実現できること
2.1 接続を再利用し、最大数を決める
接続プールは、DB接続を毎回作り直さず、処理間で再利用する仕組みです。HikariCPを使い、database.hikariで設定します。モデルごとの設定ではありません。
最大接続数は、使用中と未使用の接続を合わせた上限です。例えば最大20、未使用接続の最小数5なら、負荷に応じて接続を利用しつつ、5接続を未使用として維持することを試みます。複数のアプリケーションサーバーがある場合は、DB全体で許容する接続数も確認します。
2.2 接続待ちと生存確認の時間を分ける
| 設定 | 意味 | 設定例 |
|---|---|---|
maximumPoolSize | 使用中・未使用を合わせた最大接続数 | 20 |
minimumIdle | 維持を試みる未使用接続の最小数 | 5 |
connectionTimeout | 空き接続を取得するまで待つ上限 | 30000ミリ秒(30秒) |
validationTimeout | 接続の生存確認の上限 | 5000ミリ秒(5秒) |
idleTimeout | 余剰の未使用接続を破棄するまでの時間 | 600000ミリ秒(10分) |
maxLifetime | 接続の寿命 | 1800000ミリ秒(30分) |
接続待ちの上限は、SQLの実行時間やアップロードの処理時間を制限する設定ではありません。接続を使えるまでの待ち時間です。
2.3 値の組み合わせと既定値を確認する
時間はミリ秒単位です。minimumIdleは0以上かつ最大接続数以下にし、validationTimeoutはconnectionTimeoutより短くします。idleTimeoutは、未使用接続の最小数が最大接続数より小さい場合に有効です。
接続寿命は、DBやネットワーク側の接続制限より短くします。未使用接続の生存確認間隔を指定する場合は、接続寿命との関係も確認します。省略した項目には利用するHikariCPの既定値を使い、Wagby独自の値へ置き換えません。
2.4 接続数を増やす前に待ちの原因を確認する
最大数を増やせば常に速くなるわけではありません。接続待ちが起きる時間帯、長いSQLやトランザクション、DB側の負荷を確認して調整します。接続待ちの発生、処理の応答時間、DB側の接続数を変更前後で比べます。
接続URL・ユーザー名・パスワードは、上位のDB接続先の設定から渡します。これらをプール設定へ重複して記載する必要はありません。
3. AIへの指示例
最小限の指示例
DB接続は最大20、未使用接続は5を目安に維持し、接続待ちは30秒までにしてください。AIはDB側の接続上限、アプリケーションサーバーの台数、既存の接続寿命・生存確認設定を確認します。遅くなる状況や同時利用の規模も伝えます。この短い指示だけで、次の詳細例と同じ設定になるとは限りません。
より詳細な指示例
Wagby11のguideと必要なreferenceを確認してください。
既存のdatabase.hikariを確認し、maximumPoolSize: 20、minimumIdle: 5、connectionTimeout: 30000、validationTimeout: 5000、idleTimeout: 600000、maxLifetime: 1800000としてください。
値の単位はミリ秒とし、DB・ネットワーク側の接続寿命制限よりmaxLifetimeが短いことを確認してください。複数サーバーを使う場合はDB側の接続上限との合計も確認してください。
接続先・認証情報は保持し、接続待ちとSQL実行時間の制限を混同しないでください。起動後の接続状態と負荷時の待ち時間を確認する方法を説明してください。
既存のモデル・主キー・固定ID・データ・権限と、関係のない設定を保持してください。接続情報や秘密値を原稿・コードへ埋め込まないでください。設定の検証・必要な再生成・起動確認を行い、変更内容と確認結果を説明してください。4. 編集されるAppSchemaの例
次はDB設定の参考例です。構文を覚えなくても、利用するDBと接続・運用の条件をAIへ伝えられます。
database:
# DB種別・接続先・認証情報など、既存の設定は省略
hikari:
maximumPoolSize: 20
minimumIdle: 5
connectionTimeout: 30000
validationTimeout: 5000
idleTimeout: 600000
maxLifetime: 1800000既存のdatabaseへ追加・編集する抜粋です。各値は設定例であり、利用規模とDB側の条件に合わせます。
5. 参考資料
- guide:データベース接続
designer/docs/appschema/html/guide/02-environment/02-database.html- reference:データベース設定
designer/docs/appschema/html/reference/25-database.html