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)改回去。

  • 相关阅读:
    20155330 2016-2017-2《Java程序设计》课程总结
    20155330 实验五 网络编程与安全 实验报告
    20155330 实验四 Android程序设计
    20155330 课堂测试 20170517
    20155330 实验三 敏捷开发与XP实践
    20155330 第十一周课堂练习(20170503)
    20155330 2016-2017-2 《Java程序设计》第十周学习总结
    20155330 2016-2017-2 《Java程序设计》第九周学习总结
    2017-2018-1 20155329 《信息安全系统设计基础》第13周学习总结
    2017-2018-1 20155329 实验五 通讯协议设计
  • 原文地址:https://www.cnblogs.com/luo-mao/p/5872356.html
Copyright © 2011-2022 走看看