一、背景

在 sharding 集群中,我们发现 MongoDB ops 异常,但数据库的负载压力并不高,经过检查发现 mongos 连接数异常引发的后端 ops 异常抖动。

二、日志信息

日志中能够看到,越来越多的连接不断被占用

21935451 : 2024-01-23T15:44:24.932+0800 I NETWORK [thread2] connecti on accepted from 192.168.1.150:61849 #2152490 (626 connection s now open )

21935452 : 2024-01-23T15:44:24.932+0800 I NETWORK [t hread2] connection accepted from 192.168.1.150:61853 #2152491 (627 connecti ons now open )

21935453 : 2024-01-23T15:44:24.932+0800 I NETWORK [thread2] connection accepted from 192.168.1.150:61857 #2 152492 (628 connections now open )

21935454 : 2024-01-23T15:44:24.933+0800 I NETWORK [thread2 ] connect on accepted from 192.168.1.150:61871 #2 1 52493 (629 connect ons now open)

通过监控我们发现后端的 mongodb ops 出现抖动,如下图所示:

此时我们看一下连接数分布,如下图所示:

三、解决办法

  • 使用 net.maxlncomingConnections 参数对 mangos 和 mongod 的最大连接数进行管理和限制
  • mongod 的连接数应大于所有 mongos 的最大连接数之和