Mongodb - 100%cpu,95%+锁,低磁盘活动

时间:2014-04-03 09:51:53

标签: arrays performance mongodb

我有一个mongo数据库设置,我正在运行大量的findAndModify查询。起初它表现很好,每秒执行约400次查询和〜1000次更新(根据mongostat)。这导致了80-90%的锁定百分比,但考虑到数据吞吐量,这似乎是合理的。

过了一段时间它已经慢慢爬行了,现在每秒只做~20次查询/ ~50次更新。

所有查询都在一个集合中。大多数集合都有一组基本数据(只是键:值条目,没有数组或类似),不受影响,然后是下载格式为+字节数的下载数组。例如:

downloads: [
    {
        'bytes: 123131,
        'format': extra
    },
    {
        'bytes: 123131,
        'format': extra_hd
    }
    ...
]

一些搜索告诉我,大数组并不好,但是如果大多数文档在这个数组中只有10-15个条目(有少数异常值有1000+),它是否还会影响我的实例呢?

CPU负载不断接近100%,锁定%不断接近100%。我使用的查询被编入索引(我通过explain()确认),所以这应该不是问题。

正在运行iostat 1会给我以下内容:

        disk0       cpu     load average
  KB/t tps  MB/s  us sy id   1m   5m   15m
 56.86 122  6.80  14  5 81  2.92 2.94 2.48
 24.00   9  0.21  15  1 84  2.92 2.94 2.48
 21.33   3  0.06  14  2 84  2.92 2.94 2.48
 24.00   3  0.07  15  1 84  2.92 2.94 2.48
 33.14   7  0.23  14  1 85  2.92 2.94 2.48
 13.68 101  1.35  15  2 84  2.92 2.94 2.49
 30.00   4  0.12  14  1 84  2.92 2.94 2.49
 16.00   4  0.06  14  1 85  2.92 2.94 2.49
 28.00   4  0.11  14  2 84  2.92 2.94 2.49
 33.60   5  0.16  14  1 85  2.92 2.94 2.49

我正在使用mongodb 2.4.8,虽然升级是一个选项,我宁愿避免它。它在OS X上的本地SSD磁盘上运行。它将被转移到服务器上运行,但我想在移动它之前修复或至少理解性能问题。

0 个答案:

没有答案