经过几次尝试,我发现这是Azure的Load
Balancer的问题。
闲置60秒钟后,它将断开所有未决的TCP连接。
进一步挖掘之后,我发现了MongoDB诊断常见问题解答的这篇文章,并将tcp keepalive设置为120s:
sudo sysctl -w net.ipv4.tcp_keepalive_time=<value>
并且我还将MongoClient的socketKeepAlive设置为true:
MongoClientOptions.Builder options = MongoClientOptions.builder();options.socketKeepAlive(true);mongoClient = new MongoClient(mongoAddress, options.build());
这些修复之后,问题似乎消失了!



