MongoDB 的磁盘 IO 高到被 Linode 警告..

2014 年 7 月 8 日
 undeflife
我有个网站搭在Linode上,用的MongoDB 2.4.9 ,一天大概6000个PV而已,但是磁盘IO很高,昨天Linode给发了abuse ticket说我IO已经高到影响到邻居了 ,MongoDB的设置基本都是默认的,请问怎么解决这个问题
11414 次点击
所在节点    MongoDB
34 条回复
undeflife
2014 年 7 月 8 日
@msg7086 考虑迁到postgreSQL上去,这样部分数据结构的问题可以使用PostgreSQL的json字段的特性解决,只不过这个需要开发时间,我现在需要解决掉这个高IO的问题,还不知道我如果持续不解决,Linode会怎么处理
msg7086
2014 年 7 月 8 日
@undeflife mongodb我不熟所以没办法帮你。

Linode如果abuse的话是停掉你的机子直到你能解决问题为止。
codingpp
2014 年 7 月 8 日
会不会是journal日志的影响
undeflife
2014 年 7 月 8 日
@codingpp 有过这个怀疑 但是不敢关闭 - -
skybr
2014 年 7 月 8 日
@undeflife 没办法, mongo的性能和可靠性本身就高度依赖充足的内存和冗余的节点来保证.


@missdeer 有nosql需求的还是走pg吧, hstore很靠谱, 9.4之后还有jsonb.
happy123
2014 年 7 月 8 日
mongostat

看一下faults数目,正常情况下应该为0的。如果持续大于0说明一直在换页,该加内存了。如果持续100+,iostat看下IO负载,绝对要加内存了。
codingpp
2014 年 7 月 8 日
@undeflife
用了journal日志也会丢消息吧,mongo又不支持事务,journal刷新磁盘默认好像是100ms,这100ms内的日志还会丢
把journal日志关掉,就是把这100ms变成了60s

前天写个用mongo的程序,数据文件300m,journal日志3g,过不了几天我的小vps就没空间了。。。
undeflife
2014 年 7 月 8 日
@happy123
@codingpp
faults 4~15 所以还是内存的问题..我准备晚上试试 repairDatabase 这样数据文件能变得小一些 看有没有效果.
sujin190
2014 年 7 月 8 日
这个4g内存,8g数据怎么会有那么高的fault,是不是索引建的有问题啊?或者是数据结构问题,每次查询都要调入所有数据到内存?
sujin190
2014 年 7 月 8 日
你这fault是1046么?!!
undeflife
2014 年 7 月 8 日
@sujin190 找到个坑...程序上有个地方无索引的排序整个大collection,把这个语句干掉之后似乎情况好了不少...
sujin190
2014 年 7 月 8 日
@undeflife 8g,应该还不到百万条记录吧
undeflife
2014 年 7 月 8 日
@sujin190 嗯 不到 90几万
leafonsword
2014 年 7 月 9 日
1.加索引
2.加内存
3.换成支持数据压缩的TokuMX

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://study.congcong.us/t/121493

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX