kasei_sanのブログ

かせいさんのIT系のおぼえがきです。胡乱の方はnoteとtwitterへ

Railsのdatabase.ymlのpoolの適正数

先に結論

Railsの中でスレッド処理をしていないのであれば

  • Unicornの場合 1
  • Pumaの場合 スレッドの数

なんで UnicornとPumaで数が違うの?

ざっくりいうと、Unicornはマルチプロセスで、Pumaはマルチスレッドだから (厳密には違うけど)

それで、コネクションプールはRailsのプロセスごとに持ってる

マルチプロセスのUnicornでは、1worker = 1プロセス なので、workerが消費するのは、1つのコネクションだけ。 なので、database.ymlの pool の値は 1 が適正

それに対して、マルチスレッドのPumaでは、1つのプロセスで複数のスレッドが動作する。 そのため、スレッドの数だけコネクションが必要になる

参考

blog.kasei-san.com