广告位联系
返回顶部
分享到

MongoDB数据库性能监控介绍

MongoDB 来源:互联网 作者:佚名 发布时间:2023-09-27 22:48:54 人浏览
摘要

一、MongoDB启动超慢 1、启动日常卡住,根本不用为了截屏而快速操作,MongoDB启动真的超级慢~~ 2、启动MongoDB配置服务器,间歇性失败。 3、查看MongoDB日志,分析MongoDB启动慢的原因。 4、

一、MongoDB启动超慢

1、启动日常卡住,根本不用为了截屏而快速操作,MongoDB启动真的超级慢~~

2、启动MongoDB配置服务器,间歇性失败。

3、查看MongoDB日志,分析“MongoDB启动慢”的原因。

4、耗时“一小时”,MongoDB启动成功!

二、原因分析

在MongoDB关闭之前,有较大的索引建立的操作没有完成,MongoDB就直接shutdown了,等MongoDB再次启动的时候,MongoDB默认会将这个index重建好,重建期间处于startup状态。

由于不清楚重建索引需要多久,因此可以通过重启mongod时加上–noIndexBuildRetry参数来跳过索引重建。等启动完成后,再创建这个索引。

下面从几方面,监控一下MongoDB的性能问题。

三、监控MongoDB内存使用情况

  • 常驻内存: 是MongoDB在RAM中显式拥有的内存。如果查询一个集合数据,MongoDB会将其放入常驻内存中,MongoDB会获得其地址,这个地址不是RAM中数据的真实地址,而是一个虚拟地址。MongoDB可以将它传递给内核,内核会查找出数据的真实位置。如果内核需要从内存中清理缓存,MongoDB仍然可以通过该地址对其进行访问。MongoDB会向内核请求内存,然后内核会查看数据缓存,如果发现数据不存在,就会产生缺页错误并将数据复制到内存中,最后再返给MongoDB。
  • MongoDB的虚拟内存: 是操作系统提供的一种抽象,它对软件进程隐藏了物理存储的细节。每个进程都可以看到一个连续的内存地址空间。在Ops Manager中,MongoDB的虚拟内存是映射内存的两倍。
  • MongoDB的映射内存: 包含MongoDB曾经访问过的所有数据。

四、监控MongoDB磁盘空间

当磁盘空间不足时,可以进行如下操作:

可以添加一个分片;
删除未使用的索引;
可以执行压缩操作;
关闭副本集成员,将其数据复制到更大的磁盘中挂载;
用较大驱动器的成员替换副本集中的成员;

五、MongoDB常用命令

1、MongoDB获取系统信息

db.hostInfo()

2、MongoDB获取系统内存情况

db.serverStatus().mem

3、MongoDB获取连接数信息

db.serverStatus().connections

4、MongoDB获取全局锁信息

db.serverStatus().globalLock

5、MongoDB获取操作统计计数器

db.serverStatus().opcounters

6、MongoDB获取数据库状态信息

db.stats()

以上是MongoDB的重要指标,通过这些指标我们可以了解到MongoDB的运行状态,评估数据库的健康程度,并快速确定实际项目中遇到的性能瓶颈。

比如项目中遇到的MongoSocketReadTimeoutException:

六、MongoDB持久性

复制延迟是指从节点无法跟上主节点的速度。

从节点一个操作的时间减去主节点此操作的时间,就是复制延迟。延迟应该尽可能的接近0,并且通常是毫秒级的。

备份操作通常会将所有数据读入内存,因此,备份操作通常应该在副本集从节点而不是主节点进行,如果是单机MongoDB,则应该在空间时间进行备份,比如深夜凌晨。

持久性是数据库必备的一种特性,想象一下,如果数据库不具备持久性,如果数据库重启,数据全部丢失,太可怕了,不敢想。

为了在服务器发生故障时提供持久性,MongoDB使用预写式日志机制,英文简称 WAL。WAL是数据库系统中一种常见的持久性技术。在数据存入数据库之前,将这些更改操作写到磁盘上。

从MongoDB4.0开始,执行写操作时,MongoDB会使用与oplog相同的格式创建日志。oplog语句具有幂等性,不管执行多少次,结果都是一样的。

MongoDB还维护了日志和数据库数据文件的内存视图。默认情况,每50毫秒会将日志条目刷新到磁盘上,每60秒会将数据库文件刷新到磁盘上。刷新数据的时间60秒间隔被称为检查点。日志用于将上一个检查点之后的数据提供持久性。MongoDB的持久性就是在发生故障时,重启之后,将日志中的语句重新执行一遍,以保证在关闭前丢失的数据重新刷新到MongoDB中。

MongoDB会在data目录下创建一个journal的子目录,WiredTiger日志文件的名称为WiredTigerLog.<sequence>。sequence是一个从0 000 000 001开始的数字。

MongoDB会对写入的日志进行压缩,日志文件限制的最大大小为100MB。如果大于100MB,MongoDB就会自动创建一个新的日志文件,由于日志文件只需在上次检查点之后恢复数据,因此在新的检查点写入完成时,旧的日志文件就会被删除。


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • springboot整合mongodb的介绍

    springboot整合mongodb的介绍
    1.mongodb的安装和简介 1.1简介 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点
  • MongoDB数据库性能监控介绍

    MongoDB数据库性能监控介绍
    一、MongoDB启动超慢 1、启动日常卡住,根本不用为了截屏而快速操作,MongoDB启动真的超级慢~~ 2、启动MongoDB配置服务器,间歇性失败。 3、查
  • 详细介绍如何更新MongoDB文档的_id
    您无法更新它,但可以保存新 ID 并删除旧 ID。请按照一些步骤更新 MongoDB 的 _id。步骤如下: 第1步:第一步,需要将ObjectId存储到变量中。
  • MongoDB实现创建删除数据库、创建删除表(集合

    MongoDB实现创建删除数据库、创建删除表(集合
    一、 数据库使用 开启 mongodb 服务:要管理数据库,必须先开启服务,开启服务使用 1 mongod --dbpath c:\mongodb 管理 mongodb 数据库:(一定要在新
  • MongoDB数据库基本概念介绍

    MongoDB数据库基本概念介绍
    不管我们要学习什么数据库,都应该学习其中的基础概念,在MongoDB中基本的概念是文档、集合、数据库,下面挨个介绍。 下面的表格将会帮
  • MongoDB连接和创建数据库的方法

    MongoDB连接和创建数据库的方法
    一、连接MongoDB 在连接MongoDB前确保启动MongoDB服务,只需要在MongoDB安装目录的bin目录下执行mongo.exe即可。 执行启动操作后,mongodb在输出一些
  • 使用MongoDB操作文档

    使用MongoDB操作文档
    本篇文章中将讲解如何使用MongoDB操作文档。 文档的数据结构和JSON基本一致,所有存储在集合中的数据都是BSON格式。BSON是一种类似json格式
  • Laravel框架中使用MongoDB数据库的操作

    Laravel框架中使用MongoDB数据库的操作
    1、先确定好自己使用的哪个版本的 Laravel 框架,再决定 composer 哪一个的 MongoDB,我使用的是 Laravel 8 所以我 composer 了 3.8 的MongoDb 2、执行
  • SpringBoot整合mongoDB并自定义连接池的示例代码
    得力于SpringBoot的特性,整合mongoDB是很容易的,我们整合mongoDB的目的就是想用它给我们提供的mongoTemplate,它可以很容易的操作mongoDB数据库。
  • 剖析后OpLog订阅MongoDB的数据变更就没那么难了

    剖析后OpLog订阅MongoDB的数据变更就没那么难了
    前言 我们开源了一个订阅分发mysql的binlog的项目,一直用的非常好,忽然有天开发说能不能支持MongoDB的数据订阅呢,MongoDB的使用度也挺广泛
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计