The secret to perfectly calculate Rails database connection pool size
https://island94.org/2024/09/secret-to-rails-database-connection-pool-size
RailsのConnection poolの数を完璧に計算する否決
GoodJobの作者による記事
小さすぎると問題が起きることが知られている
プールからのチェックアウト待ちで他のリクエストの性能が劣化したり
ActiveRecord::ConnectionTimeoutErrorが起きたり
しかしload_asyncやPumaスレッド数などの変数を考慮せねばならず難しい
ohbarye.icon Railsでpumaやsidekiqのスレッド数とコネクションプールの数ってどうやって決めるんですか
秘訣は pool: 100 を指定すること
poolは名前からわかりにくいがコネクションプールが持つコネクション数の最大値の設定である
connectionは遅延作成されてプールに追加されるので、pool: 5でも0や1のときはありうる
大きすぎても問題ない
でかすぎる最大値には実際には到達不可能だから
ohbarye.icon 関連
2025-05
/ruby-jp/Connection poolの最大数を100にする
2025-03
https://x.com/nateberkopec/status/1899190599342842231
Nate Berkopecもpool: 100設定を推奨しているようす
2025-01
https://github.com/rails/rails/pull/54175
ohbarye.icon 自動で不要なconnectionを掃除する機能 (reaper) がRails本体に入るかも
https://x.com/nateberkopec/status/1882080789292007625
poolはmax_connectionsになる
reaper用の設定としてmax_age, keepaliveが入る