Mongo::Error::SocketError: 在mongo复制集中执行查询时管道断裂

问题描述 投票:0回答:1

我的 rails 应用连接到 mongo 复制集时,会随机出现这个错误。然后导致服务器描述被改为 "未知",服务器选择又重新开始。

当我尝试在本地运行应用程序连接到独立的mongod服务器时,这种情况不会发生。

出于某种原因,连接到一个副本集并对其执行重复查询的结果是

Read retry due to: Mongo::Error::SocketError EOFError: end of file reached

这是不是与副本集的下划线SSLTLS连接的问题?我试过在我的mongoid.yml中增加socket_timeout、connection_timeout,没有成功。

ruby-on-rails mongodb mongoid
1个回答
0
投票

这种情况发生在服务器关闭与客户端的连接时。有一次,当 发生的情况是,当一个副本集有一个选举--旧的主要关闭其与MongoDB 4.0和更早版本的所有连接(不与4.2+)。

由于读取是重试的,所以除了你看到的诊断消息被打印出来外,这种情况一般不会影响到应用程序。

你可以在打印消息的时候查看服务器日志,看看服务器关闭连接的原因。有时连接关闭时没有服务器端日志(例如,当服务器进程终止时,并没有记录所有连接关闭的情况)。

© www.soinside.com 2019 - 2024. All rights reserved.