gpt4 book ai didi

ruby-on-rails - Heroku、Unicorn 和延迟作业上的 Rails:PG::ConnectionBadappmodels/post.rb:93 PQconsumeInput() SSL SYSCALL 错误:连接超时

转载 作者:行者123 更新时间:2023-11-29 13:27:08 24 4
gpt4 key购买 nike

我在带有 unicorn 的 heroku 上运行 Rails 4.1.9 (Ruby 2.2.0),并使用延迟作业在后台处理内容。在任何给定时刻,我都有大约 8 个工作人员在运行。

有时我会在我的日志中看到以下错误:

PG::ConnectionBad
PQconsumeInput() SSL SYSCALL error: Connection timed out
app/models/post.rb:93 build

这些错误总是来 self 正在运行的一些后台作业。

据我了解,Delayed Jobs 实际上并没有使用 unicorn 来运行 worker,它只是每个 worker dyno 的一个 worker 进程。然而,我在这方面看到的所有问题似乎都源于 unicorn 。

我的 unicorn.rb 文件如下所示:

worker_processes 3
timeout 30
preload_app true
listen ENV['PORT'], backlog: Integer(ENV['UNICORN_BACKLOG'] || 200)

before_fork do |server, worker|

Signal.trap 'TERM' do
puts 'Unicorn master intercepting TERM and sending myself QUIT instead'
Process.kill 'QUIT', Process.pid
end

defined?(ActiveRecord::Base) and
ActiveRecord::Base.connection.disconnect!
end

after_fork do |server, worker|

Signal.trap 'TERM' do
puts 'Unicorn worker intercepting TERM and doing nothing. Wait for master to sent QUIT'
end

defined?(ActiveRecord::Base) and
ActiveRecord::Base.establish_connection
end

我四处搜索并找到了以下链接:

第一个链接告诉我将我的配置文件添加到 unicorn,第二个链接告诉我更改我的 DB_REAPING_FREQUENCY,第三个链接告诉我升级我的数据库(我有每月 50 美元的数据库已经)

知道这里可能出了什么问题以及从哪里开始修复它吗?我什至不确定去哪里找。

最佳答案

由于我的一些低效查询,这实际上只是一个需要永远(比如 4 分钟)才能运行的工作。

对于这样一个简单而愚蠢的解决方案,我花了很长时间才弄清楚哪些工作。

我一直等到我看到作业数量没有减少,运行了这段代码:

dj = Delayed::Job.where('run_at is not null').sample

然后用 dj.handler 获取处理程序以查看正在调用的实际方法是什么,在什么对象上,然后自己运行它,发现它真的很慢,并修复了它.

关于ruby-on-rails - Heroku、Unicorn 和延迟作业上的 Rails:PG::ConnectionBadappmodels/post.rb:93 PQconsumeInput() SSL SYSCALL 错误:连接超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31712331/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com