【发布时间】:2013-03-04 23:28:01
【问题描述】:
我在EC2 实例(7GB RAM)上安装了mongodb(版本:2.0.8),但数据大小仍然小于1GB。我正在使用预配的100 IOPS 磁盘来提高磁盘性能。
问题是,我收到了一些随机的慢查询,如下所示,(来自 mongo 日志)
db.UserInfoShared 查询:{ _id: "999081873179" } ntoreturn:1 idhack:1 reslen:108 1919ms
几乎花了2 secs!
这只是对集合的_id 查找,其中大约有100,000 个条目,每个条目的大小都小于500 bytes。该实例仅运行 mongo,通常此类查找所需的时间少于 0.01 sec。
这可能是什么原因?我应该怎么解决?非常感谢任何帮助...
【问题讨论】:
-
您在同一个 mongod 进程上执行的其他操作是否会导致整体缓慢?如果可能的话,从您的日志文件中查看更多信息会很有帮助。此外,您应该尝试运行 Dex。 Dex 是一个开源工具,可以查看您的慢查询并推荐索引 (mongolab.org/#view=dex)。
-
另外,您应该在docs.mongodb.org/manual/administration/production-notes 上查看 MongoDB 的生产说明文档。例如,您应该使用 ext4 或 xfs 安装卷,并确保关闭 atime。
-
毫无疑问,此查询正在使用索引,因此 Dex 不太可能提供帮助。但是,关于您的 MongoDB 实例还在做什么的问题是相关的。例如,你写了很多东西吗?偶尔的慢查询可能与洗菜同时出现。通过 (a) 更多信息 (b) 在 MongoDB 用户 google 组上提问,您可能会得到更好的回应。
-
@angela,是的,它是 ext4,并且 atime 也被禁用。其实我遵循了一个非常详细的例子docs.mongodb.org/ecosystem/tutorial/…谢谢。
-
@AsyaKamsky,我确实每天都有一个 mongodump 运行......但延迟时间与它不一致。如何检查它是否发生磁盘刷新的原因?谢谢。
标签: mongodb amazon-ec2