nginx+puma+rails の worker,thread,connection pool 数の目安

  • 10
    いいね
  • 0
    コメント

※間違ってたら指摘を...

nginx の worker 数

CPUコア数を基本とする

puma の worker 数

CPUコア数〜1.5倍を基本とする

Use cluster mode and set the number of workers to 1.5x the number of cpu cores in the machine, minimum 2.
https://github.com/puma/puma/blob/master/DEPLOYMENT.md

puma の thread 数

最大 16 therad (1プロセスあたり)はデフォルトでちょうど良いくらい?(平常時CPU使用率,メモリ使用率共に30%以下を目安とする)
MRIはGILで同時に動作するスレッドは1スレッドのみの制約があるが、スレッド内でのIO待ち(DB,ファイル等)の間に別スレッドでリクエスト処理できるので効果はある(と言われている)

database の connection pool 数

puma の thread 数と同数とする。
database.yml に設定された pool の数はプロセスごとに確保される値なので、thread数を設定すれば十分。

If you are using the Puma web server we recommend setting the pool value to equal ENV['RAILS_MAX_THREADS']
Concurrency and Database Connections in Ruby with ActiveRecord | Heroku Dev Center

以下は要確認

参考