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

  • 相关阅读:
    How to use Log4j 2 with Spring Boot
    SpringBoot使用Redis缓存
    win10下安装redis
    mysql 8.0.15修改密码
    spring-boot集成redis实现缓存功能
    Spring Boot(三):Spring Boot 中 Redis 的使用
    关于 iView-cdn模式
    HTML5 Audio-使用 Media 事件添加进度栏
    vue-cli中自定义路径别名 assets和static文件夹的区别
    CH9001: 各浏览器对常用或者错误的 Content-Type 类型处理方式不一致
  • 原文地址:https://www.cnblogs.com/luo-mao/p/5872356.html
Copyright © 2011-2022 走看看