我有一台运行 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/