返回顶部
首页 > 资讯 > 数据库 >mongodb 利用率高如何解决
  • 552
分享到

mongodb 利用率高如何解决

2024-04-02 19:04:59 552人浏览 泡泡鱼
摘要

本篇文章为大家展示了mongoDB 利用率高如何解决,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Step1: 分析数据库正在执行的请求db.currentOp()

本篇文章为大家展示了mongoDB 利用率高如何解决,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

Step1: 分析数据库正在执行的请求

db.currentOp() 

client:请求是由哪个客户端发起的?

opid:操作的opid,有需要的话,可以通过 db.killOp(opid) 直接干掉的操作

secs_running/microsecs_running: 这个值重点关注,代表请求运行的时间,如果这个值特别大,就得注意了,看看请求是否合理

query/ns: 这个能看出是对哪个集合正在执行什么操作

lock*:还有一些跟相关的参数

Step2:分析数据库慢请求

MonGoDB 支持 profiling 功能,将请求的执行情况记录到同DB下的 system.profile 集合里,profiling 有3种模式

profiling 设置文档在这里,多看官网文档

关闭 profiling

针对所有请求开启 profiling,将所有请求的执行都记录到 system.profile 集合

针对慢请求 profiling,将超过一定阈值的请求,记录到system.profile 集合

默认请求下,MongoDB 的 profiling 功能是关闭,生产环境建议开启,慢请求阈值可根据需要定制,如不确定,直接使用默认值100ms。

设置100ms的慢请求

db.setProfilingLevel(1, { slowms: 100 })

在开启了慢请求 profiling 的情况下(MongoDB 云数据库是默认开启慢请求 profiling的),我们对慢请求的内容进行分析,来找出可优化的点,常见的包括。

profiling的结果输出含义在这里,多看官网文档

CPU杀手1:全表扫描

全集合(表)扫描 COLLSCAN,当一个查询(或更新、删除)请求需要全表扫描时,是非常耗CPU资源的,所以当你在 system.profile 集合 或者 日志文件发现 COLLSCAN 关键字时,就得注意了,很可能就是这些查询吃掉了你的 CPU 资源;确认一下,如果这种请求比较频繁,最好是针对查询的字段建立索引来优化。

一个查询扫描了多少文档,可查看 system.profile 里的 docsExamined 的值,该值越大,请求CPU开销越大。

> 关键字:COLLSCAN、 docsExamined

CPU杀手2:不合理的索引

有的时候,请求即使查询走了索引,执行也很慢,通常是因为合理建立不太合理(或者是匹配的结果本身就很多,这样即使走索引,请求开销也不会优化很多)

如下所示,假设某个集合的数据,x字段的取值很少(假设只有1、2),而y字段的取值很丰富。

{ x: 1, y: 1 }

{

{ x: 1, y: 2 }

{

{ x: 1, y: 3 }

.

......

{

{ x: 1, y: 100000} 

{

{ x: 2, y: 1 }

{

{ x: 2, y: 2 }

{

{ x: 2, y: 3 }

.

......

{

{ x: 1, y: 100000} 

要服务 {x: 1: y: 2} 这样的查询

db.createIndex( {y: 1 } )        效果好,因为y相同取值很少

d

db.createIndex( {y: 1, x: 1 } )  效果好,因为y相同取值少

一个走索引的查询,扫描了多少条索引,可查看 system.profile 里的 keysExamined 字段,该值越大,CPU 开销越大。

>关键字:IXSCAN、keysExamined

CPU杀手3:大量数据排序

当查询请求里包含排序的时候,如果排序无法通过索引满足,MongoDB 会在内存李结果进行排序,而排序这个动作本身是非常耗 CPU 资源的,优化的方法仍然是建立索引,对经常需要排序的字段,建立索引。

当你在 system.profile 集合 或者 日志文件发现 SORT 关键字时,就可以考虑通过索引来优化排序。当请求包含排序阶段时, system.profile 里的 hasSortStage 字段会为 true。

> 关键字:SORT、hasSortStage

======================MongodDB shard key片键选择=====================

主要考虑key的「离散度」以及「频率」,离散度越高越好,能更好的分散数据;频率越低越好,避免出现热点;

===========MongoDB 连接串样例========================

正确连接分片集群的姿势

要正确连接复制集,需要先了解下MongoDB的Connection String URI,所有官方的driver都支持以 Connection String 的方式来连接 MongoDB 分片集群。

下面就是Connection String包含的主要内容

mongodb://[username:passWord@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]

mongodb:// 前缀,代表这是一个Connection String

username:password@ 如果启用了鉴权,需要指定用户密码

hostX:portX 多个 mongos 的地址列表

/database 鉴权时,用户帐号所属的数据库

?options 指定额外的连接选项

上述内容就是mongodb 利用率高如何解决,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: mongodb 利用率高如何解决

本文链接: https://lsjlt.com/news/56777.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • mongodb 利用率高如何解决
    本篇文章为大家展示了mongodb 利用率高如何解决,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Step1: 分析数据库正在执行的请求db.currentOp()...
    99+
    2024-04-02
  • win10 cpu占用率高如何解决
    要解决Windows 10中的高CPU占用率问题,可以尝试以下几种方法:1. 结束占用CPU较高的进程:打开任务管理器(按Ctrl ...
    99+
    2023-09-29
    win10
  • windows CPU使用率高如何解决
    本篇内容主要讲解“windows CPU使用率高如何解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“windows CPU使用率高如何解决”吧!CPU使用率高的解决方法原因一 硬件方...
    99+
    2023-07-01
  • Pytorch GPU内存占用很高,但是利用率很低如何解决
    1.GPU 占用率,利用率 输入nvidia-smi来观察显卡的GPU内存占用率(Memory-Usage),显卡的GPU利用率(GPU-util) GPU内存占用率(Memory-...
    99+
    2024-04-02
  • win7的cpu使用率高如何解决
    这篇文章主要介绍“win7的cpu使用率高如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“win7的cpu使用率高如何解决”文章能帮助大家解决问题。解决方法:...
    99+
    2022-12-08
    win7
  • windows丢包率高如何解决
    这篇文章主要讲解了“windows丢包率高如何解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“windows丢包率高如何解决”吧!解决方法:有些情况是因为线路故障导致的,这种情况需要和线路...
    99+
    2023-07-02
  • Linux Swap空间利用率过高怎么解决
    今天小编给大家分享一下Linux Swap空间利用率过高怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。什么...
    99+
    2023-07-05
  • 如何利用FutureBuilder提高开发效率
    常见场景 展示请求按钮 用户点击按钮,显示loading 展示数据或者错误 抽象模式 展示请求按钮(初始状态) 用户点击按钮,显示loading(请求中状...
    99+
    2022-05-27
    futurefuilder 开发 效率
  • win10 gpu占用率超级高如何解决
    这篇“win10 gpu占用率超级高如何解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“win10 gpu占用率超级高如何...
    99+
    2023-07-01
  • 电脑cpu使用率过高如何解决
    高CPU使用率可能是由于以下原因引起的:1. 病毒或恶意软件:运行一个病毒扫描程序来检测和清除任何可能感染计算机的恶意软件。2. 后...
    99+
    2023-08-23
    电脑
  • java内存使用率过高如何解决
    如果Java内存使用率过高,可以考虑以下几个解决方法: 调整Java虚拟机的内存参数:可以通过调整-Xmx和-Xms参数来增加或...
    99+
    2024-02-29
    java
  • 详解如何利用Golang泛型提高编码效率
    目录前言工具函数数据结构模板代码对象池/缓存总结前言 Golang的泛型已经出来有一段时间了,大家应该或多或少对它有所了解,甚至已经在应用中使用它。虽然Golang的泛型在功能上确实...
    99+
    2023-05-14
    Golang泛型提高编码效率 Golang泛型提高效率 Golang 泛型
  • MongoDB为何比mysql效率高
    这篇文章主要讲解了“MongoDB为何比mysql效率高”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MongoDB为何比mysql效率高”吧! ...
    99+
    2024-04-02
  • 虚拟主机cpu占用率高如何解决
    虚拟主机的 CPU 占用率高可能是由以下原因导致:1. 资源不足:虚拟主机所分配的 CPU 资源不足以满足当前的负载需求。解决方法可...
    99+
    2023-09-06
    虚拟主机
  • win7系统内存占用率高如何解决
    这篇文章主要介绍“win7系统内存占用率高如何解决”,在日常操作中,相信很多人在win7系统内存占用率高如何解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”win7系统内存占用率高如何解决”的疑惑有所帮助!...
    99+
    2023-07-01
  • windows中system idle process占用率高如何解决
    本文小编为大家详细介绍“windows中system idle process占用率高如何解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“windows中system idle process占用率高如...
    99+
    2023-01-29
    windows
  • 服务器CPU占用率过高如何解决
    服务器CPU占用率过高可能是由于多种原因引起的,可以采取以下几种方法来解决: 检查系统资源使用情况:使用系统监控工具查看哪些进程...
    99+
    2024-05-09
    服务器
  • 虚拟主机cpu占用率很高如何解决
    如果虚拟主机的CPU占用率很高,可以尝试以下解决方法:1. 优化网站代码:检查网站的代码是否存在效率低下的部分,尽量减少不必要的计算...
    99+
    2023-09-12
    虚拟主机
  • 模型训练时GPU利用率太低如何解决
    今天小编给大家分享一下模型训练时GPU利用率太低如何解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。模型训练时GPU利用率...
    99+
    2023-07-05
  • MongoDB经典故障系列六:CPU利用率太高怎么办?
    每逢电商大促,全民狂欢,但热闹是属于疯狂剁手的人们。而开发者们有的缺是“高流量、高访问、高并发”三高下带来的种种问题。为了应对大促期间的高I/O情况,企业会选择MongoDB云数据库应对。可是,在使用MongoDB云数据库的时候,可能经常遇...
    99+
    2022-04-11
    MongoDB经典故障系列六:CPU利用率太高怎么办?
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作