ruby-on-rails – PG :: TRDeadlockDetected:ERROR:检测到死锁
发布时间:2020-12-16 20:14:05 所属栏目:百科 来源:网络整理
导读:我通过bundle exec pumactl -F config / puma.rb重新启动8个美洲狮工作人员.现在我越来越多的postgres错误: PG::TRDeadlockDetected: ERROR: deadlock detected 我发现大约有50个空闲的postgres进程运行: postgres: myapp myapp_production 127.0.0.1(5995
我通过bundle exec pumactl -F config / puma.rb重新启动8个美洲狮工作人员.现在我越来越多的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时,它们消失. 如何更好地管理这些流程?谢谢你的帮助! 更新 我的妈妈 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 解决方法
我可能已经找到了一个解决我的问题的解决方案:我的控制器之外有一些查询(自定义中间件),这似乎引起了这个问题.
如果您在控制器外面有查询(ActiveMailer也可能导致此问题),请将代码放在ActiveRecord :: Base.connection_pool.with_connection块中: ActiveRecord::Base.connection_pool.with_connection do # code end ActiveRecord的with_connection方法产生从其池到块的数据库连接.块完成后,将自动将连接重新连接到池中,避免连接泄漏. 我希望这有助于你们! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |