我的 rails 应用连接到 mongo 复制集时,会随机出现这个错误。然后导致服务器描述被改为 "未知",服务器选择又重新开始。
当我尝试在本地运行应用程序连接到独立的mongod服务器时,这种情况不会发生。
出于某种原因,连接到一个副本集并对其执行重复查询的结果是
Read retry due to: Mongo::Error::SocketError EOFError: end of file reached
这是不是与副本集的下划线SSLTLS连接的问题?我试过在我的mongoid.yml中增加socket_timeout、connection_timeout,没有成功。
这种情况发生在服务器关闭与客户端的连接时。有一次,当 该 发生的情况是,当一个副本集有一个选举--旧的主要关闭其与MongoDB 4.0和更早版本的所有连接(不与4.2+)。
由于读取是重试的,所以除了你看到的诊断消息被打印出来外,这种情况一般不会影响到应用程序。
你可以在打印消息的时候查看服务器日志,看看服务器关闭连接的原因。有时连接关闭时没有服务器端日志(例如,当服务器进程终止时,并没有记录所有连接关闭的情况)。