MongoDB连接相关报错

您所在的位置:网站首页 Mongodb40引擎 MongoDB连接相关报错

MongoDB连接相关报错

#MongoDB连接相关报错| 来源: 网络整理| 查看: 265

文章目录 一、maxIncomingConnections1、参数含义2、参数达到上限对应报错 二、maxSessions1、参数含义2、参数达到上限对应报错

一、maxIncomingConnections 1、参数含义

mongos或mongod接收的最大并发连接数,默认为65536,当该参数设置值操作操作系统最大连接数限制时,取两者之间最小值作为上限。

一般情况下,该参数值的设置需要大于客户端创建连接数与应用池最大连接数,避免客户端连接报错。对于mongos服务来讲,合理设置该参数也可以避免单各shard节点上出现连接尖峰,破坏集群稳定和内存分配。

2、参数达到上限对应报错

1)数据库连接报错

[root@sdw2 logs]# mongo --port=27001 MongoDB shell version v4.0.22 connecting to: mongodb://127.0.0.1:27001/?gssapiServiceName=mongodb 2021-04-19T20:13:56.650+0800 I NETWORK [js] DBClientConnection failed to receive message from 127.0.0.1:27001 - HostUnreachable: Connection closed by peer 2021-04-19T20:13:56.651+0800 E QUERY [js] Error: network error while attempting to run command 'isMaster' on host '127.0.0.1:27001' : connect@src/mongo/shell/mongo.js:356:17 @(connect):2:6 exception: connect failed

2)数据库错误日志

2021-04-19T20:13:38.609+0800 I NETWORK [ReplicaSetMonitor-TaskExecutor] DBClientConnection failed to receive message from 172.16.104.13:27001 - HostUnreachable: Connection closed by peer 2021-04-19T20:13:40.530+0800 I NETWORK [listener] connection refused because too many open connections: 6 2021-04-19T20:13:56.649+0800 I NETWORK [listener] connection refused because too many open connections: 6

3)解决方法

当出现以上报错时,就表示当前数据库连接数超过了 maxIncomingConnections 参数的设置,可以检查该参数是否设置合理,需要修改该参数并重启数据库实例进行处理。

二、maxSessions 1、参数含义

MongoDB 4.0.1 版本中新增参数,默认为1000000,表示mongos或者mongod服务可缓存的最大会话数,当该参数设置小于 maxIncomingConnections 参数时,客户端可正常创建连接并进行用户认证,但是无法进行正常的查询操作,并返回报错: “errmsg”:“cannot add sessiion into the cache”,“code”:“261”,“codeName”:“TooManyLogicalSessions”

[root@sdw2 logs]# cat /data/mongodb40/shard1/conf/ net: maxIncomingConnections: 20000 2、参数达到上限对应报错 [root@sdw2 ~]# mongo --port=27001 MongoDB shell version v4.0.22 connecting to: mongodb://127.0.0.1:27001/?gssapiServiceName=mongodb Implicit session: session { "id" : UUID("cea19ae7-4805-48b8-9bc9-81cad423f727") } MongoDB server version: 4.0.22 shard1:SECONDARY> use admin switched to db admin shard1:SECONDARY> db.auth("root","123") 1 shard1:SECONDARY> db.adminCommand( { getParameter: 1, "maxSessions": 1 } ) { "operationTime" : Timestamp(1618842001, 1), "ok" : 0, "errmsg" : "cannot add session into the cache", "code" : 261, "codeName" : "TooManyLogicalSessions", "$gleStats" : { "lastOpTime" : Timestamp(0, 0), "electionId" : ObjectId("000000000000000000000000") }, "lastCommittedOpTime" : Timestamp(1618842001, 1), "$configServerState" : { "opTime" : { "ts" : Timestamp(1618841990, 1), "t" : NumberLong(1) } }, "$clusterTime" : { "clusterTime" : Timestamp(1618842005, 1), "signature" : { "hash" : BinData(0,"GovaI39+V0lvGf3px8+0m/IVfhc="), "keyId" : NumberLong("6947282400699219974") } } }

2)解决办法

当超过 maxSessions 参数限制时,数据库错误日志中并不会记录相关报错信息,仅仅在客户端请求查询时无法正常返回请求结果。若出现以上报错,需要修改配置文件中maxSessions参数,设置该参数时可参考 maxIncomingConnections 的设置。

每个会话都会占用一个alive session cache,超过一定时间后会自动进行释放,若业务并发较高的情况下,cache释放的速度赶不上客户端新增请求速度时,就会频繁出现该报错。

[root@sdw2 logs]# cat /data/mongodb40/shard1/conf/ setParameter: maxSessions: 2

3、相关状态查看

db.runCommand( { serverStatus: 1, repl: 1, metrics: 0, locks: 0 } ) "logicalSessionRecordCache" : { "activeSessionsCount" : 2, "sessionsCollectionJobCount" : 30, "lastSessionsCollectionJobDurationMillis" : 14, "lastSessionsCollectionJobTimestamp" : ISODate("2021-04-19T14:43:20.508Z"), "lastSessionsCollectionJobEntriesRefreshed" : 0, "lastSessionsCollectionJobEntriesEnded" : 0, "lastSessionsCollectionJobCursorsClosed" : 0, "transactionReaperJobCount" : 30, "lastTransactionReaperJobDurationMillis" : 12, "lastTransactionReaperJobTimestamp" : ISODate("2021-04-19T14:43:20.509Z"), "lastTransactionReaperJobEntriesCleanedUp" : 0, "sessionCatalogSize" : 0

相关文档参考:

https://docs.mongodb.com/manual/reference/parameters/ https://docs.mongodb.com/manual/reference/command/serverStatus/


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3