postgresql - 多个无法从客户端接收数据 : Connection reset by peer Postgresql and Resque

标签 postgresql resque puma

我有一台运行 Postgresql 的服务器。在日志中,我在基于 resque 的“worker”框中看到这条消息,每分钟多次。有的几分钟没有消息,有的可能是 10 次。

2016-01-12 13:40:36 EST:1.1.8.2(33899):[16141]: LOG:  could not receive data from client: Connection reset by peer

现在,当我进入 1.1.8.2 框查看 netstat -ntp 时,我没有看到端口 33899,其中大部分至少在现在是 40xxx 范围。这可能是推测,但我不知道为什么 Redis/Resque/Puma Rails 堆栈会打印出这些消息,更不用说这意味着什么了,即使我深入了解它。

如果它们“正常”关闭,我会恢复内存吗?

这是一件需要警惕的事情吗?

当 db box 和 worker box 都不再显示端口时,如何调试打开的旧端口?

最佳答案

此消息可能是由于 resque worker 任务在退出前未关闭数据库连接。这不是一个大问题,但大概 Postgres 正在做一些额外的工作来清理它,它会使你的日志文件变得一团糟......

一个解决方案是在 resque worker 的任务文件(包含 self.perform 定义的同一个文件)中添加一个钩子(Hook):

  def self.after_perform(*args)
    ActiveRecord::Base.connection.disconnect!
  end

关于postgresql - 多个无法从客户端接收数据 : Connection reset by peer Postgresql and Resque,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34751490/

相关文章:

java - 在 spring 3/PostgreSQL 8.4.9 中从行插入中获取自动生成的键

background-process - Jesque 如何使用 Huge Payload?

ruby - 如何为 Hanami 应用程序配置 Puma?

logging - Sinatra with Puma 在终端中提供两倍的输出

sql - PostgreSQL:选择非 DISTINCT 的行数

c - 读取 SELECT 的值并将其作为 int 存储在 C 中

postgresql - PostgreSQL 对等身份验证对生产安全吗?

ruby-on-rails - "undefined method ` 去救援web ui时处理路由'"

ruby-on-rails - Rails 开发环境 Resque.enqueue 不创建作业

ruby-on-rails - 如何清理我的 Puma Logs?