zoukankan      html  css  js  c++  java
  • mongodb启用Profiling定位问题

    建议使用方法三,最简单且容易查看

    一:如果mongodb已经运行了很长时间,此时查看mongod.log很大,没法打开查看相应信息

    #ps -ef|grep mongod

    找到相应的mongod的进程的pid

    然后kill -SIGUSR1 pid  这样mongod就会重新生成一个日志文件

    > db.setProfilingLevel(2); 
      {"was" : 0 , "ok" : 1} 
      > db.getProfilingLevel()
      上面斜体的级别可以取0,1,2 三个值,他们表示的意义如下:
      0 – 不开启

      1 – 记录慢命令 (默认为>100ms)

      2 – 记录所有命令

    开启profiling后在mongod节点的log日志中查看

    cat mongod.log

    或是tail -300 mongod.log

    二.

    以后你们遇到了这种某个操作慢的问题直接从数据库里在小数据下打开第5级log,看看它访问了那些表格,直接去看Py中有没有index
    一般说来只要系统不瘫痪,没有index是慢的直接原因
    db.adminCommand({logRotage:1})
    kill -SIGUSR1 xxx
    db.setLogLevel(1, "query")
    db.setLogLevel(1, "command")

    为了以后尽快的定位专属MongoDB的问题,请你们如果发现哪个操作或者并行操作性能慢的话帮忙抓取一下MongoDB log。

    分为两方面:

    Profiling: 如果我们定义所有的慢于100ms的数据库操作多为慢操作的话做如下操作:

                           use MyDomain

                           db.setProfilingLevel(1, 100), 用你测试的Domain 替换MyDomain

                           这样所有的慢操作都会在 db.system.profile这里显示。

                           db.setProfilingLevel(2) 是打开所有操作profile, 可以实验用,或者短时打开。但是一定要及时关闭。

                           show collections 会看到多了一个collection  叫system.profile

                           然后db.system.profile.find().pretty()

    Log: 用db.setLogLevel(1,command)可以看到所有的操作,每个操作的用时都会记录下来。

            记得定位后用db.setLogLevel(0,command)改回去。

  • 相关阅读:
    JS鼠标滚动事件
    [Harbor]Harbor简要介绍
    [Kubernetes]yaml文件详解
    [Kubernetes]安装和配置kubectl
    [Docker]如何批量删除镜像
    [Kubernetes]如何使用yaml文件使得可以向外暴露服务
    [Jenkins]CentOS7下Jenkins搭建
    [Docker]Docker拉取,上传镜像到Harbor仓库
    [Harbor]Docker登录Harbor仓库(HTTP方式)
    [Docker]CentOS7通过rpm包安装Docker
  • 原文地址:https://www.cnblogs.com/luo-mao/p/5872356.html
Copyright © 2011-2022 走看看