V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐工具
RoboMongo
推荐书目
50 Tips and Tricks for MongoDB Developers
Related Blogs
Snail in a Turtleneck
sujin190
V2EX  ›  MongoDB

mongodb 长时间卡顿问题

  •  
  •   sujin190 · 2016-01-22 11:20:43 +08:00 · 4800 次点击
    这是一个创建于 3009 天前的主题,其中的信息可能已经有所发展或是发生改变。

    mongodb 没过一会就会出现长达 20 秒左右的锁等待,看日志也不和特定的查询有关, cpu 使用率 10%左右,内存 50%,每秒 30-50 左右读写,这是为什么呢?太奇怪了

    第 1 条附言  ·  2016-01-22 17:15:31 +08:00
    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 看到了

    12 条回复    2016-01-23 00:50:45 +08:00
    lianghui
        1
    lianghui  
       2016-01-22 11:50:13 +08:00   ❤️ 2
    mongo 的范围查询会锁住全库,是不是有大量并发范围查询? 比如 start_time > 7 && start_time < 10000 之类? 如果没法避免这类查询 可以把一个 collection 做成一个库
    mengzhuo
        2
    mengzhuo  
       2016-01-22 14:40:50 +08:00
    先看查询语句是不是写得不好
    再看索引状态,一般是索引没建
    然后是 mongostat 看看是不是 IO 过高导致

    最后, mongo3 从库锁改成了 collection 锁
    sujin190
        3
    sujin190  
    OP
       2016-01-22 16:03:14 +08:00
    @lianghui 没有这样的查询啊,数据最多一个 collection 也才不到一百万,也不可能锁那么久啊
    @mengzhuo mongostat 读写, io , fault 都很低,但就是突然卡一下,突然卡一下的,
    MartinWu
        4
    MartinWu  
       2016-01-22 16:35:35 +08:00
    看 currentop
    yuchting
        5
    yuchting  
       2016-01-22 16:35:49 +08:00
    卡的时候看一下 iotop 哈,如果有条件, ssh 上去试一下 dd 写一个 1G 的文件,看看是不是硬盘卡了。如果是 VPS ,母鸡的其他小鸡在读取硬盘。

    话说我就遇到过,有时候其他小鸡不知道在干什么,我的就盘子就不动, mongodb 就死活不返回。。。
    vietor
        6
    vietor  
       2016-01-22 16:42:19 +08:00 via Android
    分片迁移?
    sujin190
        7
    sujin190  
    OP
       2016-01-22 17:10:05 +08:00
    @MartinWu 看了,处于 waitForLock 状态,每次等的查询不一样
    @yuchting ucloud 主机,应该是有 ssd 的吧,而且每秒写只有几十, iotop 看的时候每秒写 60 几 kB 吧,不算什么吧,日志中看很奇怪,针对主键_id 跟新已存在 key 的值也会出现长达 30 秒的,插入也会出现 20 多秒的, mongodb 不应该这么弱啊
    @vietor 数据量很低的,总量才一个来 G ,不需要分片吧
    yuchting
        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 如果是默认的话,绝对有日志输出的。一查问题就知道在哪里。
    sujin190
        9
    sujin190  
    OP
       2016-01-22 22:10:16 +08:00
    @yuchting 母机问题,这个倒还没想过,不过所有都试了还是无法解释的话,还真有可能。。
    如果 mongodb 傻逼了的话,一般会有什么问题呢?
    icegreen
        10
    icegreen  
       2016-01-22 23:11:02 +08:00
    icegreen
        11
    icegreen  
       2016-01-22 23:12:00 +08:00
    上面贴了我之前优化 mongodb 的一些笔记;主要是针对查询队列堆积,查询缓慢,优化索引方面的;
    tpwow
        12
    tpwow  
       2016-01-23 00:50:45 +08:00 via Android
    先 mark
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5485 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 03:07 · PVG 11:07 · LAX 20:07 · JFK 23:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.