mongoDB 百万量级是否需要做集群?

2017-03-27 14:09:07 +08:00
 frostfall

目前公司 MongoDB ( Version:2.6)单机运行,大并发查询与写入的时候性能很低

想到的解决方法:

1 、据说 3.X 版本性能有很大提升,但是测试环境升到 3.4 直接好多方法已废弃,代码上要进行大量修改,这条路貌似走不通

2 、另一个方法就是集群,但是感觉百万量级上集群是不是杀鸡用牛刀了?

所以有两个问题想请教各位

Q1 :尽量不大量修改代码的情况下, MongoDB 3.X 哪个版本可用?

Q2 :上集群是否大材小用,毕竟在 MongoDB 上没有太多经验

7985 次点击
所在节点    程序员
22 条回复
suren1986
2017-03-27 14:14:42 +08:00
1. 大量查询为啥不做 replica?
2. 写入性能低的原因是什么?只是磁盘么?换 SSD ?
scofieldpeng
2017-03-27 14:18:14 +08:00
连接池和异步有试过么?大并发查询每次都打到数据库?有考虑过热点缓存么?
scofieldpeng
2017-03-27 14:18:38 +08:00
我觉得把这个做好了,你应该能撑一段时间了
we3613040
2017-03-27 14:20:44 +08:00
只是百万级别的就不行了?不是吧
zacard
2017-03-27 14:43:15 +08:00
其实想问,这个量级为何不用 mysql 。

然后,你们应该先测试下单纯写的效率。读的话索引是否合理等。
集群也可以啊, mongodb 上集群简单。只是还是觉得你们这条路走下去很可能还是得回到 mysql 。。。
frostfall
2017-03-27 14:43:23 +08:00
@suren1986 之前因为大并发下硬盘太慢, page faults 太多,于是换了一台新服务器,只跑 MongoDB 。平时内存占用只在 1GB 左右, 但是并发测试下依旧很慢,这时 Mongostat 查看 page faults 并不多,内存占用升到 4GB 左右
icegreen
2017-03-27 15:07:55 +08:00
百万量级应该单机是能抗住的, 建议分析一下瓶颈在哪里, 优化一下程序;
sampeng
2017-03-27 17:06:58 +08:00
超过十万就需要,不仅仅是扛量,更多的是主从,挂了还能接着用。。。

另外。。。为毛不用 mysql 。。。 mongodb 我知道的都切回了 mysql 。。。量越大切的越早。还是有这么多要当小白鼠的
sampeng
2017-03-27 17:08:35 +08:00
没有经验还要去趟雷。。
frostfall
2017-03-27 17:29:09 +08:00
测试环境模拟并发,几乎不能复现,推测应该不是性能问题,看来现在要转变思路解决问题了
tinybaby365
2017-03-27 18:14:30 +08:00
写入是修改,还是新插入?修改如果超过原 doc 的 size ,就会新开辟空间并产生碎片。

查询,可以加索引,组合索引。

卡的时候最好用 MMS 看看。
popbones
2017-03-27 18:18:32 +08:00
每个月都要被 MongoDB 坑一次的来围观
mathgl
2017-03-27 18:54:12 +08:00
mongodb 2.6 问题挺多的。不推荐使用。

mongodb 就我使用经验而言,查询和插入的性能和 pg 比较并没有优势。
imzshh
2017-03-27 19:38:34 +08:00
百万量级是个什么概念?百万并发请求?
rrfeng
2017-03-27 20:02:42 +08:00
page faults 太多是内存配的太小吧?
mmap 还是 wt 引擎?

我们集群过亿的 collection 有好几个,也就 2 节点读 1 primary 写。

根据我的经验,大部分性能问题是因为没有 mongodb 经验,从根本上来说除了因为实现不同导致一些差异(例如没有事务)外,性能上都有解决方案。只是 mysql 现成文档多, mongodb 需要自己钻研。
rrfeng
2017-03-27 20:02:59 +08:00
另外单机你不怕丢么?
suyuanhxx
2017-03-27 22:28:15 +08:00
面试时被问到 mongodb 的使用业务场景,我瞬间懵逼了......我回答的是用户无规律行为(如点击链接,数据统计分类不明确时)
sujin190
2017-03-27 23:51:51 +08:00
也从 2.6 升级到 3.2 ,没遇到什么不兼容问题啊。。
不过话说用了许久 mongodb 整体感觉确实有点怪,压力不高但是慢查询一堆,整体性能还是很靠谱的,不过 3 的 wt 引擎感觉性能更稳定一些,用来做日志缓冲,每天写几千万也毫无压力
FrankFang128
2017-03-28 00:47:12 +08:00
少用 mongodb 啊,被坑过
zaishanfeng
2017-03-28 07:18:38 +08:00
mongo 优化的好比 mysql 方便的多, 问题是版本更新太快,兼容性不好,网上的资料又比较杂,用起来比较费劲。那些说 mongo 坑的, 估计是习惯了关系数据库那一套,不想折腾吧

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

https://www.v2ex.com/t/350602

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

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

© 2021 V2EX