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)改回去。
最新文章
- Codeforces118D Caesar's Legions(DP)
- 【USACO 1.2】Palindromic Squares
- WPF中父子窗口的层次关系
- Red Hat Linux认证
- (字符串的处理4.7.16)POJ 1159 Palindrome(让一个字符串变成回文串需要插入多少个字符...先逆序,在减去公共子序列的最大长度即可)
- C# 之 读写文件
- Java中中文拼音的排序问题
- java中的数据库事务处理
- centos下安装mysql步骤
- [Hapi.js] Logging with good and good-console
- Linux初学者必知的5个学习网站
- PendingIntent
- sql将查询结果建立为新表
- mycat+mysql集群:实现读写分离,分库分表
- Linux -- nginx
- OI回忆录——一个过气OIer的制杖历程
- IT题库8-死锁
- card布局解决复杂操作的布局问题
- 读了这篇文章,你将变身web分析大师
- jq 插件写法
热门文章
- kindle 应用程序出错,无法启动选定的应用程序,请重试。问题排查过程及处理方案。
- 服务器负载、CPU性能判断
- 【MDCC 2015】开源选型之Android三大图片缓存原理、特性对比
- Python3.6(windows系统)通过pip安装bs4
- 20145219《网络对抗技术》PC平台逆向破解之逆向与Bof基础
- JMeter的下载以及安装使用
- git status出现 fatal: Not a git repository (or any of the parent directories): .git
- IDEA 搭建授权服务器
- POJ 1860 Currency Exchange(Bellman-Ford)
- spark udf 初识初用