Multiple无法从客户端接收数据:通过对等Postgresql和Resque重置连接

时间:2016-01-12 18:45:46

标签: 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堆栈会打印出这些消息,更不用说即使我到底了也意味着什么。

如果他们关闭通常'

,我会获回记忆吗?

这是一件值得警惕的事吗?

当数据库框和工作框都不再显示端口时,如何调试打开的OLD端口?

1 个答案:

答案 0 :(得分:5)

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

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

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