检查当前连接到MongoDb的数量

14 浏览
0 Comments

检查当前连接到MongoDb的数量

获取连接到特定MongoDB服务器的客户端数量的命令是什么?

0
0 Comments

检查当前连接到MongoDb的数量的原因是因为使用db.serverStatus()命令只能得到已打开和可用连接的数量,但无法显示连接来自哪个客户端。可以使用sudo lsof | grep mongod | grep TCP命令来获取更多信息。这个问题出现在进行了复制并且主节点的客户端连接数大于从节点的情况下。解决方法是使用sudo lsof -i | grep mongod命令,并使用-i标志只获取每个连接的一个条目,不需要再使用grep过滤TCP连接。通过这个命令可以得到每个连接的详细信息,包括IP地址和端口号。

0
0 Comments

检查MongoDb当前连接数的原因是为了在调试问题时查看连接数。下面是使用Mongo Shell查询当前连接数的代码:

db.currentOp(true).inprog.reduce((accumulator, connection) => {
  ipaddress = connection.client ? connection.client.split(":")[0] : "Internal";
  accumulator[ipaddress] = (accumulator[ipaddress] || 0) + 1;
  accumulator["TOTAL_CONNECTION_COUNT"]++;
  return accumulator;
}, { TOTAL_CONNECTION_COUNT: 0 })

这段代码返回了一个对象,其中包含了每个IP地址的连接数以及总连接数。例如:

{
    "TOTAL_CONNECTION_COUNT" : 331,
    "192.168.253.72" : 8,
    "192.168.254.42" : 17,
    "127.0.0.1" : 3,
    "192.168.248.66" : 2,
    "11.178.12.244" : 2,
    "Internal" : 41,
    "3.100.12.33" : 86,
    "11.148.23.34" : 168,
    "81.127.34.11" : 1,
    "84.147.25.17" : 3
}

其中,"Internal"表示内部进程,没有外部客户端。可以使用以下代码查看这些进程的列表:

db.currentOp(true).inprog.filter(connection => !connection.client).map(connection => connection.desc);

在Atlas实例上运行以上示例时,可能会出现以下错误:`E QUERY [js] TypeError: db.currentOp(...).inprog is undefined :`。这是因为在Atlas上的某些层级中不允许使用`$all`操作符查询当前操作。解决方法是将`connection.client`改为`connection.client_s`。

0
0 Comments

MongoDb的db.serverStatus().connections命令可以用来检查当前连接到MongoDb的连接数。可以通过以下方式获取连接数:

db.serverStatus().connections

其中,connections.current表示当前连接数,connections.available表示可用连接数,connections.totalCreated表示总共创建的连接数。

连接数的原因和解决方法如下:

原因:连接数过多可能会导致服务器负载过高,需要及时处理。

解决方法:优化数据库连接的使用,尽可能减少不必要的连接,提高数据库的性能和稳定性。

0