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

时间: 2024-12-29 12:27:38

mongodb启用Profiling定位问题的相关文章

MongoDB Database Profiling

MongoDB Database Profiling MongoDB Profiler是一个捕获数据库执行活动的系统,它可以帮助识别慢查询和操作. Profiling级别 可用的捕获级别意义如下: 级别 设置 0 禁用 1 启用,只记录慢操作 2 启用,记录所有操作 查看Profiling级别 > db.getProfilingLevel() 启用Profiler > db.setProfilingLevel(1) 完整命令为: db.setProfilingLevel(level,slowm

[MongoDB]Profiling性能分析

摘要 上篇文章介绍了mapReduce这个聚合操作.本篇将继续学习,db有了,collection和document也有,基本上够用了,但是随着项目上线后,发现业务数据越来越多,查询效率越来越慢,这时就需要分析慢查询记录了.如何开启慢查询记录?就是本篇文章介绍的内容了. 相关文章 [MongoDB]入门操作 [MongoDB]增删改查 [MongoDB]count,gourp,distinct [MongoDB]mapReduce [MongoDB]索引 Profiling 首先添加测试数据,添

MongoDB CPU 利用率高排查

MongoDB CPU 利用率高,怎么破? 经常有用户咨询「MongoDB CPU 利用率很高,都快跑满了」,应该怎么办? 遇到这个问题,99.9999% 的可能性是「用户使用上不合理导致」,本文主要介绍从应用的角度如何排查 MongoDB CPU 利用率高的问题 Step1: 分析数据库正在执行的请求 用户可以通过 Mongo Shell 连接,并执行 db.currentOp() 命令,能看到数据库当前正在执行的操作,如下是该命令的一个输出示例,标识一个正在执行的操作.重点关注几个字段 cl

当 PHP 遇上 MongoDB

FROM:http://www.cstor.cn/textdetail_7995.html 之前笔者出了一篇文章是教大家在 Linux 下安装 MongoDB,并且透过 Mongo Client 操作资料库 (Console Interface),但实际应用上最常搭配 Web 或 WebService 进行实作.接下来我们要介绍如何在 PHP 中操作 MongoDB.这里一样介绍 CentOS 的安装方式,首先透过 EPEL 安装 PHP Mongo Driver,请执行以下命令安装: sudo

MongoDB 数据存储引擎

存储引擎(Storage Engine)是MongoDB的核心组件,负责管理数据如何存储在硬盘(Disk)和内存(Memory)上.从MongoDB 3.2 版本开始,MongoDB 支持多数据存储引擎(Storage Engine),MongoDB支持的存储引擎有:WiredTiger,MMAPv1和In-Memory. 从MongoDB 3.2 版本开始,WiredTiger成为MongDB默认的Storage Engine,用于将数据持久化存储到硬盘文件中,WiredTiger提供文档级别

MySQL系列教程(一)

摘要 MySQL的最初的核心思想,主要是开源.简便易用.其开发可追溯至1985年,而第一个内部发行版本诞生,已经是1995年.到1998年,MySQL已经可以支持10中操作系统了,其中就包括win平台. 此文档将从安装开始带领着读者一步步深入了解mySQL相关功能,该文由作者多年实战经验的总結而组成,其中包括如下内容: 近几十条优化经验 mySQL集群.主备 多种SQL优化分析手段 mySQL读写分离 mySQL横向及垂直折分 面向读者 该文适用于Linux CENTOS6.X及以上相关环境,m

MongoDB3.2配置文件.md

Core Options systemLog Options systemLog: verbosity: <int> quiet: <boolean> traceAllExceptions: <boolean> syslogFacility: <string> path: <string> logAppend: <boolean> logRotate: <string> destination: <string>

mysql安装优化

安装centos7 安装mysql解决方案1 安装mariadb解决方案2 官网下载安装mysql-server时区批量配置编码远程连接my.cnf简版的参数说明核心配置参数升级版mysql存储引擎MySQL 存储引擎中InnoDB与Myisam的主要区别SQL执行分析使用profiling分析sql 安装 centos7 安装mysql 查询当前系统版本是否为centos7 cat /etc/redhat-release CentOS 7 版本将MySQL数据库软件从默认的程序列表中移除,用m

mysql源代码安装细说

mysql为我们提供了三种安装方式:二进制.rpm.源代码编译.这里我们详细讨论mysql的源代码编译安装方式. 在5.5版本之后,mysql不再提供configure编译方式,改为使用cmake编译工具,cmake工具的一个显著特点是其编译独立于源代码,即我们可以在源代码之外的目录使用cmake来编译mysql,如 [[email protected] tmp]# ls -l | grep mysql drwxr-xr-x 2 root root 4096 4月 29 21:11 mysql2