面试题答案
一键面试使用mongostat
工具
- 安装:通常在MongoDB安装包中自带,若未安装可通过包管理器安装。
- 基本使用:在命令行输入
mongostat
,它会定期(默认1秒)输出MongoDB的各种统计信息,其中包括当前连接数等与网络连接相关信息。例如:
insert query update delete getmore command flushes mapped vsize res faults locked db idx miss % qr|qw ar|aw netIn netOut conn set repl time
*0 *0 0 0 *0 1|0 0 0.0 0.0 104.0 0 0 0.0% 0|0 0|0 68b 145b 1 rs0 PRIMARY 10:32:16
其中conn
字段表示当前连接到MongoDB实例的客户端连接数。
使用db.serverStatus()
命令
- 使用方法:在MongoDB的
mongo
shell中,连接到数据库实例后,执行db.serverStatus().connections
。该命令会返回一个包含连接相关信息的文档。 - 返回示例:
{
"current" : 1,
"available" : 200,
"totalCreated" : NumberLong(2)
}
current
:当前连接到MongoDB实例的客户端连接数。available
:当前可用的连接数。totalCreated
:从实例启动以来创建的连接总数。
使用top
命令(结合MongoDB特定状态文件)
- 使用场景:在类Unix系统上,结合MongoDB的状态文件使用。
- 步骤:首先确保MongoDB配置文件中设置了
systemLog.path
(日志文件路径)和processManagement.fork
(设置为true
以启用守护进程模式)。然后在命令行执行top -p <mongodb_pid>
,可以查看MongoDB进程的资源使用情况。虽然不直接展示连接客户端信息,但结合日志文件中关于连接建立和断开的记录,可以辅助跟踪连接状态。同时,可通过lsof -p <mongodb_pid>
命令查看MongoDB进程打开的文件描述符,其中包含网络连接相关信息(如客户端IP等)。例如,若输出中有类似mongodb 12345 mongodb 6u IPv4 0x1234567890abcdef 0t0 TCP 192.168.1.100:27017->192.168.1.101:55555 (ESTABLISHED)
,则表明有客户端192.168.1.101:55555
连接到了MongoDB实例192.168.1.100:27017
。