来自Springboot客户端的Mongo数据库已关闭连接问题

时间:2020-07-02 02:03:17

标签: mongodb connection timeout spring-data-mongodb

我们在随机查询中间歇性地遇到Mongo连接问题,不确定是什么原因:(。尝试了不同的方法,但仍然无法解决问题。对此将提供任何帮助!

我们有外部集群式Mongo DB(3节点),它们从Springboot( spring-data-mongodb )服务(Kubernetes 4个Pod)进行连接,并使用 MongoTemplate 进行查询。这是一项繁重的服务。

我们间歇性地在日志中看到以下两种错误-

Closed connection [connectionId{localValue:7, serverValue:1381867}] to <server> because the pool has been closed.
org.mongodb.driver.connection
Closed connection [connectionId{localValue:4, serverValue:1382308}] to <sever> because there was a socket exception raised by this connection.

尝试了MongoClientOptions的各种设置,但没有任何帮助。以下是当前存在的设置。

MongoClientOptions{description='null', applicationName='null', compressors='[]', readPreference=primary, writeConcern=WriteConcern{w=null, wTimeout=null ms, fsync=null, journal=null, retryWrites=false, readConcern=com.mongodb.ReadConcern@0, codecRegistry=org.bson.codecs.configuration.ProvidersCodecRegistry@b152e8bc, serverSelector=null, clusterListeners=[], commandListeners=[], minConnectionsPerHost=0, maxConnectionsPerHost=100, threadsAllowedToBlockForConnectionMultiplier=5, serverSelectionTimeout=30000, maxWaitTime=120000, maxConnectionIdleTime=0, maxConnectionLifeTime=0, connectTimeout=10000, socketTimeout=60000, socketKeepAlive=true, sslEnabled=false, sslInvalidHostNamesAllowed=false, sslContext=null, alwaysUseMBeans=false, heartbeatFrequency=500, minHeartbeatFrequency=500, heartbeatConnectTimeout=10000, heartbeatSocketTimeout=60000, localThreshold=15, requiredReplicaSetName='null', dbDecoderFactory=com.mongodb.DefaultDBDecoder$1@2b4fdc83, dbEncoderFactory=com.mongodb.DefaultDBEncoder$1@70930d4, socketFactory=null, cursorFinalizerEnabled=true, connectionPoolSettings=ConnectionPoolSettings{maxSize=100, minSize=0, maxWaitQueueSize=500, maxWaitTimeMS=120000, maxConnectionLifeTimeMS=0, maxConnectionIdleTimeMS=0, maintenanceInitialDelayMS=0, maintenanceFrequencyMS=60000, connectionPoolListeners=[]}, socketSettings=SocketSettings{connectTimeoutMS=10000, readTimeoutMS=60000, keepAlive=true, receiveBufferSize=0, sendBufferSize=0}, serverSettings=ServerSettings{heartbeatFrequencyMS=500, minHeartbeatFrequencyMS=500, serverListeners='[]', serverMonitorListeners='[]'}, heartbeatSocketSettings=SocketSettings{connectTimeoutMS=10000, readTimeoutMS=60000, keepAlive=true, receiveBufferSize=0, sendBufferSize=0}}

Springboot应用程序yaml配置 数据:

mongodb.uri: mongodb://<userid:pwd>@<server1,server2,server3>/<databasename>?replicaSet=<resplicaset>

现在也:net.ipv4.tcp_keepalive_time = 7200

欢迎您的帮助!

谢谢, 安居

0 个答案:

没有答案
相关问题