首页 > 数据库 >Mongodb 性能监控工具FreeMonitoring,mongostat,mongotop,Profiler,索引,分片,事务超时,MongoDB调优

Mongodb 性能监控工具FreeMonitoring,mongostat,mongotop,Profiler,索引,分片,事务超时,MongoDB调优

时间:2024-10-17 17:21:46浏览次数:8  
标签:mongotop ShardKey FreeMonitoring MongoDB db 索引 分片 集合 日志

db.users.createIndex({username : 'hashed'})
1 # 创建唯一索引
db.values.createIndex({title:1},{unique:true})
2 # 复合索引支持唯一性约束
db.values.createIndex({title:1,type:1},{unique:true})
3 #多键索引支持唯一性约束
db.inventory.createIndex( { ratings: 1 },{unique:true} )

使用分片集群
1.为了使集合支持分片,需要先开启database的分片功能
sh.enableSharding("shop")

2.执行shardCollection命令,对集合执行分片初始化,分片键必须有索引支持。除非集合为空,否则索引必须在
sh.shardCollection(namespace, key, unique, options)
sh.shardCollection("records.people", { zipcode: 1 } ) //1 范围分配
sh.shardCollection("shop.product",{productId:"hashed"},false,{numInitialChunks:4})
sh.shardCollection("shop.product",{productId:"hashed"},false)

3.shop.product集合将productId作为分片键,并采用了哈希分片策略,除此以外,
“numInitialChunks:4”表示将初始化4个chunk。 numInitialChunks必须和哈希分片策略配合使
用。而且,这个选项只能用于空的集合,如果已经存在数据则会返回错误。

4.查询数据的分布
db.product.getShardDistribution()

5.分片键(ShardKey)的约束
ShardKey 必须是一个索引。非空集合须在 ShardCollection 前创建索引;空集合 ShardCollection自动创建索引

  1. 4.4 版本之前:
    ShardKey 大小不能超过 512 Bytes;
    仅支持单字段的哈希分片键;
    Document 中必须包含 ShardKey;
    ShardKey 包含的 Field 不可以修改。 分片键必须有索引支持。除非集合为空,否则索引必须在
    4.4 版本之后:
    ShardKey 大小无限制;
    支持复合哈希分片键;
    Document 中可以不包含 ShardKey,插入时被当 做 Null 处理;
    为 ShardKey 添加后缀 refineCollectionShardKey 命令,可以修改 ShardKey 包含的 Field;
    而在 4.2 版本之前,ShardKey 对应的值不可以修改;4.2 版本之后,如果 ShardKey 为非_id 字段,
    那么可以修改 ShardKey 对应的值。

7.checkpoint 60秒写一次数据到磁盘,或100M,减少i/o压力

8.事务超时
默认情况下MongoDB会为每个事务设置1分钟的超时时间,如果在该时间内没有提交,就会强制将其终止。

9.MongoDB调优
三大导致MongoDB性能不佳的原因
1) 慢查询
2) 阻塞等待
3)硬件资源不足
1,2通常是因为模型/索引设计不佳导致的,排查思路:按1-2-3依次排查

链接池链接数设置maxpoolsize:默认100
timeout设置:

https://www.processon.com/view/link/6239daa307912906f511b348

  1. mongodb性能检测工具:FreeMonitoring
    1 # 启用监控
    db.enableFreeMonitoring()
    db.getFreeMonitoringStatus()
    2 # 禁止监控
    db.disableFreeMonitoring()

https://cloud.mongodb.com/freemonitoring/cluster

  1. mongodb性能检测工具:mongostat是MongoDB自带的监控工具,其可以提供数据库节点或者整个集群当前的状态视图,需要clusterMonitor角色权限
    mongostat -h 192.168.65.174 --port 28017 -user -pwd --authenticationDatabase=admin --discover --interactive -n 2

mongostat:关注的主要指标:
插入、删除、修改、查询的速率是否产生较大波动,是否超出预期。
qrw、arw:队列是否较高,若长时间大于0则说明此时读写速度较慢。
conn:连接数是否太多。
dirty:百分比是否较高,若持续高于10%则说明磁盘I/O存在瓶颈。
netIn、netOut:是否超过网络带宽阈值。
repl:状态是否异常,如PRI、SEC、RTR为正常,若出现REC等异常值则需要修复。

  1. mongodb性能检测工具:mongotop命令可用于查看数据库的热点表,通过观察mongotop的输出,可以判定是哪些集合占用
    了大部分读写时间,需要clusterMonitor角色权限
    mongotop -h 192.168.65.174 --port=28017 -user -pwd --authenticationDatabase=admin
    指标名 说明
    ns 集合名称空间
    total 花费在该集合上的时长
    read 花费在该集合上的读操作时长
    write 花费在该集合上的写操作时长

检测:
操作执行次数
内存使用情况
CPU使用率
操作数

  1. mongodb性能检测工具:Profiler模块可以用来记录、分析MongoDB的详细操作日志。默认情况下该功能是关闭的,对某个业
    务库开启Profiler模块之后,符合条件的慢操作日志会被写入该库的system.profile集合中.
    级别 说明
    0 日志关闭,无任何输出
    1 部分开启,仅符合条件(时长大于slowms)的操作日志会被记录
    2 日志全开,所有的操作日志都被记录

将level设置为2,此时所有的操作会被记录下来。

db.setProfilingLevel(2)
db.setProfilingLevel(1,500) //只记录大于500毫米的慢日志

检查是否生效

db.getProfilingStatus()

开启Profiler模块之后,可以通过system.profile集合查看最近发生的操作日志
db.system.profile.find().limit(5).sort({ts:-1}).pretty()
db.system.profile.find({op:"update",ns:"shop.user"}) 查看某个集合中的update操作日志

https://www.mongodb.com/zh-cn/docs/v5.0/reference/method/sh.shardCollection/

标签:mongotop,ShardKey,FreeMonitoring,MongoDB,db,索引,分片,集合,日志
From: https://www.cnblogs.com/chenshaojun2008/p/18472737

相关文章

  • MongoDB安装(新版本保姆级教程)
    下载安装包首先进入官网(社区版),在对应页面选择需要安装的版本(这里下载当前适合版本号)DownloadMongoDBCommunityServer|MongoDB 选择在任一磁盘创建空文件夹(不要使用中文路径),解压之后把文件夹内容剪切进去手动创建data和log两个文件夹找到path,打开路径,将自......
  • 第三节:MongoDB聚合操作和索引详解
    一.        二.        三.         !作       者:Yaopengfei(姚鹏飞)博客地址:http://www.cnblogs.com/yaopengfei/声     明1:如有错误,欢迎讨论,请勿谩骂^_^。声     明2:原创博客请在转载......
  • MongoDB
    MongoDB快速上手文章目录MongoDB快速上手前言一、环境搭建二、MongoDB操作1.数据库操作1.1选择和创建数据库1.2数据库的删除2.集合操作2.1集合的显式创建(了解)2.2集合的隐式创建2.3集合的删除3.文档基本CRUD3.1文档的插入(1)单个文档插入(2)批量插入3.2文档的基本......
  • MongoDB安装及配置Navicat MongoDB Tools
    一、下载MongoDB1.下载网址:https://www.mongodb.com/try/download/community注:本文档以Windows和msi安装为例二、安装MongoDB打开.msi文件在硬盘任意位置创建mongo目录,内包含mongo.conf文件内容:#存放数据目录dbpath=D:\mongo\data\db端口port=27017日志......
  • MongoDB常用操作
    MongoDB常用操作的语法格式及其举例如下1、创建数据库语法useDATABASE_NAME例子:usemymongoDB;2、查看数据库语法:showDATABASE_NAME3、删除数据库语法:db.dropDatabase()4、创建集合语法:db.createCollection(name,options)例子:创建普通集合db.createCollection("mytest")创建固......
  • MongoDB新的均衡策略和自动合并
    均衡器的用途均衡器是一个后台线程,运行于配置服务器(configserver)副本集的主节点。它定期检查分片中块(chunks)和数据的分布情况。如果达到某些迁移阈值,均衡器就会决定将块从一个分片迁移到另一个分片。其主要目标是在所有分片中拥有大致相同的数据量。 在繁忙的集群中,迁移......
  • MongoDB集群的启动和关闭顺序
    分片(Shard)环境中的启动和关闭1.启动这个具体的参照分片的配置,启动的顺序是configserver->副本集/分片(shardX)->->mongos2.关闭因为mongos是分片架构最前端的入口,所以关闭顺序:mongos->副本集/分片(shardX)->configserver单实例:直接关闭db.getSiblingDB(“admin”).shutdow......
  • MongoDB
    安装Homebrew:brewtapmongodb/brewbrewupdatebrewinstallmongodb-community相关路径(AppleSilicon):配置文件路径:/opt/homebrew/etc/mongod.conf日志文件路径:/opt/homebrew/var/log/mongodb数据目录:/opt/homebrew/var/mongodb参考:安装MongoDB|MongoDB手册使用......
  • MongoDB分片键选择指南
    MongoDB分片键选择指南特别是华为Mongodb4.0集群的使用,更能提高查询效率MongoDB是一款高性能的NoSQL数据库,能够处理大量数据并支持水平扩展。为了实现这一点,MongoDB使用了分片技术,而选择合适的分片键对性能和可伸缩性有着至关重要的影响。第一步:理解分片的工作原理MongoDB的......
  • 第二节:基于.Net 链接Mongodb实战
     三. 实操(详见官网:https://www.mongodb.com/zh-cn/docs/drivers/csharp/current/quick-start/)1.相关程序集 【MongoDB.Driver2.17.1】  相关实体:加上如下特性,id值自动生成。publicclassShipInfo{///<summary>///自动生成id/......