Я перезапускаю 8 работников puma через bundle exec pumactl -F config/puma.rb phased-restart
, что отлично работает. Теперь я получаю все больше ошибок postgres:
PG::TRDeadlockDetected: ERROR: deadlock detected
Я нашел около 50 простаивающих процессов postgres:
postgres: myapp myapp_production 127.0.0.1(59950) idle
postgres: myapp myapp_production 127.0.0.1(60141) idle
...
Они исчезают, когда я запускаю bundle exec pumactl -F config/puma.rb stop
.
После запуска приложения с bundle exec pumactl -F config/puma.rb start
я получаю ровно 16 незанятых процессов. (Восемь слишком много, на мой взгляд.)
Как лучше управлять этими процессами? Спасибо за вашу помощь!
Обновление
Мой puma.rb:
environment 'production'
daemonize true
pidfile 'tmp/pids/puma.pid'
state_path 'tmp/pids/puma.state'
threads 0, 1
bind 'tcp://0.0.0.0:3010'
workers 8
quiet