【发布时间】:2015-06-20 21:09:34
【问题描述】:
我正在运行一个使用 mongo 分片集群的节点(0.10.26)应用程序。我使用三成员副本集作为分片。这是我的其他配置详情
硬件和操作系统设置
- EC2:m3.large(内存:7.5G)
- Linux Ubuntu 12.04(内核:3.2.0-69-virtual 64 位)
- 磁盘:400 G SSD (EBS)(以 noatime 和 32 预读设置安装)
应用程序的加载模式
- 插入速率 = 20-30/秒 大多数插入都是到日志收集的,它们发生了 每时每刻。
- 查询率 = 50-100 / 秒
- 更新 = ~30 /秒
蒙古人
- 存储引擎:默认 (mmapv1)
- 索引大小:3.5G
- 工作集:270 MB
- 猫鼬版本:3.8.25
- Mongo 版本:2.6.5
我的应用程序提供了一个接口,可以将日志记录下载为带有特定过滤器的 csv 文件。当我尝试下载 csv 时,应用程序变得非常慢。
经过一番调查,我得出的结论是查询日志需要很长时间(>2 分钟,有时长达 10 分钟) 由于数据库响应慢,应用程序也慢
问题
-
为什么查询日志需要很长时间。
如果我执行explain(),我看到它命中了索引。
mongostat(延迟 1 秒运行时)表示存在 是否发生了许多页面错误(~800 - 1100)/秒。这页纸 查询返回后故障消退。后续查询返回 几秒钟后。
工作集 + 索引大小 = 3.7 G
内存 = 7.5 G。
日志收集大小 = 50 G
频繁写入日志集合是否会影响读取操作 在同一个集合上。这种担忧是否适用于我的工作量?
【问题讨论】:
-
您有一个非常详细的问题(我很高兴从新用户那里看到这个问题),但是您可以在每个帖子中保留一个问题吗?在您的情况下,有 4 个。
标签: linux node.js mongodb amazon-ec2