MongoDB数据库性能监控看这一篇就够了( 二 )

  • 1.
  •  
     
    MongoDB数据库性能监控看这一篇就够了

    文章插图
     
    3、MongoDB获取连接数信息 
    db.serverStatus().connections
    • 1.
     
     
    MongoDB数据库性能监控看这一篇就够了

    文章插图
     
    4、MongoDB获取全局锁信息 
    db.serverStatus().globalLock
    • 1.
     
     
    MongoDB数据库性能监控看这一篇就够了

    文章插图
     
    5、MongoDB获取操作统计计数器 
    db.serverStatus().opcounters
    • 1.
     
     
    MongoDB数据库性能监控看这一篇就够了

    文章插图
     
    6、MongoDB获取数据库状态信息 
    db.stats()
    • 1.
     
     
    MongoDB数据库性能监控看这一篇就够了

    文章插图
     
    以上是MongoDB的重要指标 , 通过这些指标我们可以了解到MongoDB的运行状态 , 评估数据库的健康程度 , 并快速确定实际项目中遇到的性能瓶颈 。
    比如项目中遇到的Timeout异常:
     
    com.mongodb.MongoSocketReadTimeoutException: Timeout while receiving messageat com.mongodb.connection.InternalStreamConnection.translateReadException(InternalStreamConnection.JAVA:475)at com.mongodb.connection.InternalStreamConnection.receiveMessage(InternalStreamConnection.java:226)at com.mongodb.connection.UsageTrackingInternalConnection.receiveMessage(UsageTrackingInternalConnection.java:105)at com.mongodb.connection.DefaultConnectionPool$PooledConnection.receiveMessage(DefaultConnectionPool.java:438)at com.mongodb.connection.CommandProtocol.execute(CommandProtocol.java:112)at com.mongodb.connection.DefaultServer$DefaultServerProtocolExecutor.execute(DefaultServer.java:168)at com.mongodb.connection.DefaultServerConnection.executeProtocol(DefaultServerConnection.java:289)at com.mongodb.connection.DefaultServerConnection.command(DefaultServerConnection.java:176)at com.mongodb.operation.CommandOperationHelper.executeWrAppedCommandProtocol(CommandOperationHelper.java:216)at com.mongodb.operation.CommandOperationHelper.executeWrappedCommandProtocol(CommandOperationHelper.java:207)at com.mongodb.operation.CommandOperationHelper.executeWrappedCommandProtocol(CommandOperationHelper.java:113)at com.mongodb.operation.FindOperation$1.call(FindOperation.java:488)at com.mongodb.operation.FindOperation$1.call(FindOperation.java:1)at com.mongodb.operation.OperationHelper.withConnectionSource(OperationHelper.java:241)at com.mongodb.operation.OperationHelper.withConnection(OperationHelper.java:214)at com.mongodb.operation.FindOperation.execute(FindOperation.java:483)at com.mongodb.operation.FindOperation.execute(FindOperation.java:1)at com.mongodb.Mongo.execute(Mongo.java:818)
    • 1.
    • 2.
    • 3.
    • 4.
    • 5.
    • 6.
    • 7.
    • 8.
    • 9.
    • 10.
    • 11.
    • 12.
    • 13.
    • 14.
    • 15.
    • 16.
    • 17.
    • 18.
    • 19.
     
    六、MongoDB持久性?1、复制延迟复制延迟是指从节点无法跟上主节点的速度 。
    从节点一个操作的时间减去主节点此操作的时间 , 就是复制延迟 。延迟应该尽可能的接近0 , 并且通常是毫秒级的 。
    2、备份备份操作通常会将所有数据读入内存 , 因此 , 备份操作通常应该在副本集从节点而不是主节点进行 , 如果是单机MongoDB , 则应该在空间时间进行备份 , 比如深夜凌晨 。
    3、持久性持久性是数据库必备的一种特性 , 想象一下 , 如果数据库不具备持久性 , 如果数据库重启 , 数据全部丢失 , 太可怕了 , 不敢想 。
    为了在服务器发生故障时提供持久性 , MongoDB使用预写式日志机制 , 英文简称 WAL 。WAL是数据库系统中一种常见的持久性技术 。在数据存入数据库之前 , 将这些更改操作写到磁盘上 。
    从MongoDB4.0开始 , 执行写操作时 , MongoDB会使用与oplog相同的格式创建日志 。oplog语句具有幂等性 , 不管执行多少次 , 结果都是一样的 。


    推荐阅读