mongodb慢查询日志使用参考-创新互联-成都快上网建站

mongodb慢查询日志使用参考-创新互联

mongodb的Profiling功能->慢查询功能

目前创新互联已为近千家的企业提供了网站建设、域名、虚拟主机网站托管、企业网站设计、包头网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

   Profiling 把收集到的信息写入到system.profile集合中,system.profile集合是一个capped collection。

1.定位mongodb慢查询语句方法:
    开启Profiling功能,通过定位慢查询日志,找到执行比较慢的语句,然后进行优化,思路如下:
    a.查询慢查询日志(system.profile)找到超过定义时间的慢查询语句;
    b.explain()查看执行计划,可以参考如下文章:https://blog.51cto.com/1937519/2301699
    c.确定语句慢的原因,如缺少索引,业务批量问题等,思路与传统的rdbms的sql优化等同;
   
2.开启慢查询:
  2.1:Profiling级别说明:
     a.0:关闭,不收集任何数据。
     b.1:收集慢查询数据,默认是100毫秒。
     c.2:收集所有数据
    
  2.2:数据库慢查询配置(注意写入配置文件,重启后生效):
     a.查看状态:级别和时间
     repsetzhou:PRIMARY> db.getProfilingStatus()
      { "was" : 1, "slowms" : 200 }

    b.查看级别
     repsetzhou:PRIMARY> db.getProfilingLevel()
     1

    c.设置级别
     repsetzhou:PRIMARY> db.setProfilingLevel(2)
     { "was" : 1, "slowms" : 200, "ok" : 1 }

    d.确认设置级别:
     repsetzhou:PRIMARY> db.getProfilingLevel()
     2

    e.说明:设置级别和时间(1000 相当于1s)
     repsetzhou:PRIMARY> db.setProfilingLevel(1,1000) ###(包括级别、时间参数,时间是毫秒单位)
     { "was" : 2, "slowms" : 1000, "ok" : 1 }

2.3:在配置文件中开启慢查询:

    operationProfiling:
          slowOpThresholdMs: 200
          mode: slowOp


3.关闭Profiling:
     a.关闭:
     repsetzhou:PRIMARY> db.setProfilingLevel(0)
     { "was" : 2, "slowms" : 1000, "ok" : 1 }
     b.确认:
     repsetzhou:PRIMARY> db.getProfilingStatus()
     { "was" : 0, "slowms" : 1000 }

4.修改system.profile的大小:

   a.关闭Profiling:
     repsetzhou:PRIMARY> db.setProfilingLevel(0)
     { "was" : 0, "slowms" : 200, "ok" : 1 }
    b.删除system.profile集合:
     repsetzhou:PRIMARY> db.system.profile.drop()
      true
    c.创建一个新的system.profile集合 - 10M:
     repsetzhou:PRIMARY>db.createCollection( "system.profile", { capped: true, size:10000000 } )
     { "ok" : 1 }
    d.重新开启Profiling:
    repsetzhou:PRIMARY> db.setProfilingLevel(1)
     { "was" : 0, "slowms" : 200, "ok" : 1 }

5.1慢查询(system.profile)分析:

  repsetzhou:PRIMARY> db.system.profile.find()

  a.查询大于指定时间如500毫秒:

  db.system.profile.find({"millis":{$gte:500}})

  b.查询指定时间慢查询:

   db.system.profile.find(
                      {
                       ts : {
                             $gt : new ISODate("2018-10-22T03:01:45.976Z"),
                             $lt : new ISODate("2018-10-22T03:01:48.976Z")
                            }
                      }
                     )

   c.显示5最近的事件:

   show profile

5.2:在mongodb的日志文件中同样记录慢查询日志,如果system.profile已经被覆盖,可以参考mongodb的后台日志。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


文章名称:mongodb慢查询日志使用参考-创新互联
标题路径:http://kswjz.com/article/cssies.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流