如何调试"could not receive data from client: Connection reset by peer"



我在 Ubuntu-12.04 上运行一个 django-celery 应用程序。

当我从 Web 界面运行芹菜任务时,我收到以下错误,取自 postgresql-9.3 日志文件(最大日志级别):

2013-11-12 13:57:01 GMT tss_usr 8113 LOG:  could not receive data from client: Connection reset by peer

tss_usr是 Django 应用程序数据库的 postgresql 用户,(在这个例子中)8113 是杀死连接的进程的 pid,我猜。

您是否知道为什么会发生这种情况或至少如何调试此问题?

为了使事情再次工作,我需要重新启动postgresql,这非常不舒服。

我知道

这是一个较旧的帖子,但我只是找到了它,因为我今天在我的 postgres 日志中遇到了同样的错误。 我将其缩小到PDO选择语句。 我在 Ubuntu Precise 上使用 Zend Framework 1.10.3。

如果$opinion长文本字符串,则以下 pdo 语句生成错误。 列意见是在我的帖子表中键入文本。 如果$opinion少于一定数量的字符,则查询成功。 1000个字符工作正常。2000 个字符失败,并显示"无法从客户端接收数据:对等方重置连接"。

  $select = $this->db->select()
           ->from( 'datauserstopics' )
           ->where("opinion = ?",trim($opinion))
           ->where("datatopicsid = ?",trim($tid))
           ->where("datausersid= ?",$datausersid);
  $stmt = $this->db->query($select);

我通过使用以下方法规避了这个问题: ->where("substr(opinion,1,100) = ?",trim(substr($opinion,1,100

)))

这不是一个完美的解决方案,但就我而言,使用 substr() 的 select 语句就足够了。

请注意,我将长字符串插入同一个表/列没有问题。 断开连接问题仅在具有相对较长文本字符串的PDO选择上出现。

我在 2017 年的 9.4 中得到了它,我没有文本字段,不知道 PDO 是什么。 我的 select 语句长约 50 字节,我正在尝试获取 int4 和双精度。 我怀疑错误消息可能意味着多种事情。

此后,我发现了 https://dba.stackexchange.com/questions/142350/postgres-could-not-receive-data-from-client-connection-reset-by-peer,这表明这可能是客户端配置的问题。 我的客户端是libpg,PQconnectdb()给了我一个CONNECTION_OK回报。 它至少部分有效。

对我来说

,重新启动虚拟机管理程序,Postgres和使用它的应用程序都有帮助。不过,我以前在 dmesg 中看到过堆栈跟踪。

相关内容

  • 没有找到相关文章

最新更新