mongo命令太多?你至少需要记住这4个

简介: mongo命令太多?你至少需要记住这4个

自从上一篇文章聊聊非关系型数据库MongoDB索引,大家反响还不错,今天我们继续聊下mongo的服务命令,通过下面几个命令让你更加了解自己mongo服务应用状态。


一、使用db.currentOp()函数

该函数会列出数据库正在进行的所有操作,最常用的作用就是寻找速度较慢的操作。

opid 操作的唯一标志符,可以通过它来终止操作,通过db.killOp(opid)来终止该操作的执行。

op 表示操作类型,查询,插入,更新,删除一种

secs_running 表示该操作已经执行的时间。通过它来判断那些查询耗时过长,或者占用了过多的数据库资源。

默认currentOp()操作展示很多的数据,可以通过添加过滤条件展示符合展示结果,如下面。

image.png

二、系统分析器setProfilingLevel

查询耗时过长的操作,可以用系统分析器(system profiler)进行setProfilingLevel开启。

设置0, 关闭分析器

设置2,开启分析器会记录所有内容,所有读写记录在system.profile集合,但这会造成一定性能损失。

设置1,默认只显示长耗时(> 100ms)操作,也可以自己设置比如300ms, 这里不要将值设置过低,否则即使关闭了分析器,超过slowms值操作也会出现在日志中。

这种方式能更好发现,我们查询的耗时在哪儿,随时进行优化我们的应用的操作。


scanv_rs:PRIMARY> db.setProfilingLevel(1,300) 
{
    "was" : 0, # 状态
    "slowms" : 100, # 慢查询时间
    "sampleRate" : 1,
    "ok" : 1,
    "operationTime" : Timestamp(1541420614, 1),
    "$clusterTime" : {
        "clusterTime" : Timestamp(1541420614, 1),
        "signature" : {
            "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
            "keyId" : NumberLong(0)
        }
    }
}


三、使用stats函数显示集合或数据库的值

比如 db.users.stats(),db.stats() 在线上列出数据库信息会拖慢数据库操作,需要注意不要在高峰期执行这类操作。


scanv_rs:PRIMARY> db.stats()
    "objects" : 1000000,  # 文档总数
    "avgObjSize" : 87.88889,
    "dataSize" : 87888890, # 此数据库数据占用空间大小
    "storageSize" : 27336704, # 数据库正在使用的总空间大小
    "numExtents" : 0,
    "indexes" : 3,
    "indexSize" : 33841152,
    "fsUsedSize" : 223878615040,
    "fsTotalSize" : 249779191808,
    "ok" : 1,
    "operationTime" : Timestamp(1541421778, 1),
    "$clusterTime" : {
        "clusterTime" : Timestamp(1541421778, 1),
        "signature" : {
            "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
            "keyId" : NumberLong(0)
        }
    }
}


四、使用mongotop和mongostat

mongotop类似unix命令top命令,mongostat提供服务器信息,默认每秒输出一次包含当前状态列表

image.png

通过上面的几个命令,我们便能够更加了解我们服务发生了什么,以及该做一些什么来改变应用的状态,比如加索引,调整查询条件等等方式,让我们的服务时刻保持最佳状态。

相关文章
|
存储 算法 编译器
【C++ 泛型编程 入门篇】C++模板类精讲:探索通用编程的魅力与实战应用
【C++ 泛型编程 入门篇】C++模板类精讲:探索通用编程的魅力与实战应用
253 0
|
缓存 运维 Shell
幻兽帕鲁爆内存优化方案
最近有很多小伙伴反馈说4C16G的服务器玩时间久了经常出现内存过满自动重启的情况,现在总结下linux和windows系统下怎么进行优化。
|
存储 Linux 虚拟化
CentOS 7搭建NFS服务器
CentOS 7搭建NFS服务器
|
Linux
Linux中Too many open files 问题分析和解决
Linux中Too many open files 问题分析和解决
311 0
|
安全 大数据 Linux
总结下 fs.file-max,ulimit -n 和 lsof的异同
总结下 fs.file-max,ulimit -n 和 lsof的异同
|
11月前
|
域名解析 弹性计算 网络安全
CEN+私网NAT实现跨地域访问云服务需求-CEN企业版
本文介绍了如何通过企业版云企业网和私网NAT配置,实现ECS内网跨地域访问OSS资源的方法。该方法避免了跨地域配置云服务网段时可能出现的管控异常问题,适用于其他云服务如MQ等。
|
运维 Ubuntu 安全
在Linux中,如何配置NFS共享?
在Linux中,如何配置NFS共享?
|
弹性计算 Linux 云计算
云服务器 ECS产品使用问题之幻兽帕鲁服务器如何存档拷贝
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。
|
安全 数据安全/隐私保护
屏蔽修改wp-login.php登录入口确保WordPress网站后台安全
WordPress程序默认的后台地址wp-login.php,虽然我们的密码设置比较复杂,但是如果被软件一直扫后台入口,一来影响网站的速度增加服务器的负担,二来万一被扫到密码,那就处于不安全的境地。所以,我们最好将后台地址入口隐藏屏蔽起来,我们可以通过下面的命令实现隐蔽wp-login.php入口。
330 0
|
IDE Linux 开发工具
linux镜像下载和vmware虚拟主机部署
linux镜像下载和vmware虚拟主机部署
1031 0
linux镜像下载和vmware虚拟主机部署