mongodb 没过一会就会出现长达 20 秒左右的锁等待,看日志也不和特定的查询有关, cpu 使用率 10%左右,内存 50%,每秒 30-50 左右读写,这是为什么呢?太奇怪了
insert query update delete getmore command flushes mapped vsize res faults locked db idx miss % qr|qw ar|aw netIn netOut conn set repl time
*0 6 *0 *0 0 3|0 0 45.4g 97.8g 3.24g 0 delivery:0.0% 0 0|0 0|0 1k 8k 266 gege PRI 17:12:39
1 23 *0 *0 0 1|0 0 45.4g 97.8g 3.24g 0 delivery:0.0% 0 1|0 0|1 639b 8k 266 gege PRI 17:12:47
11 145 13 *0 0 11|0 0 45.4g 97.8g 3.23g 1 sms:94.6% 0 0|0 3|0 26k 70k 266 gege PRI 17:12:48
29 78 9 *0 0 8|0 0 45.4g 97.8g 3.26g 0 weixin:0.3% 0 0|0 1|0 27k 41k 266 gege PRI 17:12:49
6 20 4 *0 0 1|0 0 45.4g 97.8g 3.26g 0 weixin:3.7% 0 0|0 2|0 7k 13k 266 gege PRI 17:12:50
9 30 6 *0 0 1|0 0 45.4g 97.8g 3.26g 0 weixin:0.2% 0 0|0 0|0 9k 32k 266 gege PRI 17:12:51
6 22 1 *0 0 1|0 0 45.4g 97.8g 3.26g 0 delivery:0.2% 0 0|0 0|0 5k 9k 266 gege PRI 17:12:52
6 13 1 *0 0 1|0 0 45.4g 97.8g 3.32g 0 delivery:0.0% 0 0|0 0|0 5k 9k 266 gege PRI 17:12:53
2 12 1 *0 0 3|0 0 45.4g 97.8g 3.32g 0 delivery:0.0% 0 0|0 0|0 3k 9k 266 gege PRI 17:12:54
1 18 3 *0 0 1|0 0 45.4g 97.8g 3.26g 0 delivery:0.3% 0 0|0 0|0 3k 45k 266 gege PRI 17:12:55
mongostats 看到了
1
lianghui 2016-01-22 11:50:13 +08:00 2
mongo 的范围查询会锁住全库,是不是有大量并发范围查询? 比如 start_time > 7 && start_time < 10000 之类? 如果没法避免这类查询 可以把一个 collection 做成一个库
|
2
mengzhuo 2016-01-22 14:40:50 +08:00
先看查询语句是不是写得不好
再看索引状态,一般是索引没建 然后是 mongostat 看看是不是 IO 过高导致 最后, mongo3 从库锁改成了 collection 锁 |
3
sujin190 OP |
4
MartinWu 2016-01-22 16:35:35 +08:00
看 currentop
|
5
yuchting 2016-01-22 16:35:49 +08:00
卡的时候看一下 iotop 哈,如果有条件, ssh 上去试一下 dd 写一个 1G 的文件,看看是不是硬盘卡了。如果是 VPS ,母鸡的其他小鸡在读取硬盘。
话说我就遇到过,有时候其他小鸡不知道在干什么,我的就盘子就不动, mongodb 就死活不返回。。。 |
6
vietor 2016-01-22 16:42:19 +08:00 via Android
分片迁移?
|
7
sujin190 OP |
8
yuchting 2016-01-22 21:25:04 +08:00 1
@sujin190 我就是用的 mongodb ,数据量非常大,完全木有问题查询、写字段完全木有问题。用得很嗨,多次出现问题,丫的都是因为母鸡出事故。
我提供的方法细节,卡的时候,两个 ssh ,一个监控 iotop ,另外一个用 dd , iotop 这个时候会显示出 dd 写盘子的 io ,如果这个 dd 也只有几十 kb ,那么肯定母鸡问题,如果这个时候 dd 达到百 M ( ssd 很容易达到哈),那表示 mongodb 傻逼了,从 mongodb 的日志上面入手,这个时候 mongo shell setProfilingLevel 如果是默认的话,绝对有日志输出的。一查问题就知道在哪里。 |
9
sujin190 OP @yuchting 母机问题,这个倒还没想过,不过所有都试了还是无法解释的话,还真有可能。。
如果 mongodb 傻逼了的话,一般会有什么问题呢? |
10
icegreen 2016-01-22 23:11:02 +08:00
|
11
icegreen 2016-01-22 23:12:00 +08:00
上面贴了我之前优化 mongodb 的一些笔记;主要是针对查询队列堆积,查询缓慢,优化索引方面的;
|
12
tpwow 2016-01-23 00:50:45 +08:00 via Android
先 mark
|