在window连接使用远程linux上的mongodb,经常出现这个错误,实在不能忍了,就去Google找了一下答案。
这是由于TCP的KeepAlive 机制导致的。可以了解一下TCP 中的 KeepAlive 机制

以下是mongoDB官方文档的答案。

如果在客户端和服务器之间或者没有其他合理原因的分片集群或副本集的成员之间遇到套接字错误,请检查TCP keepalive值(例如,tcp_keepalive_timeLinux系统上的 值)。常见的保持活动时间是 7200秒(2小时); 但是,不同的发行版和macOS可能有不同的设置。
对于MongoDB,您将获得更好的结果,保持期更短,大约为120秒(两分钟)。

如果是linux系统,可以使用以下命令查看保持活动设置

sysctl net.ipv4.tcp_keepalive_time

要更改该tcp_keepalive_time值,可以使用以下命令(value是你要设置的keepalive时间,单位是秒)

sudo sysctl -w net.ipv4.tcp_keepalive_time = <value>

对于网上的另一种答案,设置mongo的socketkeepAlive为true,这个方法已经过时了,默认为true。所以不需要手动设置。

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐