目前公司 MongoDB ( Version:2.6)单机运行,大并发查询与写入的时候性能很低
想到的解决方法:
1 、据说 3.X 版本性能有很大提升,但是测试环境升到 3.4 直接好多方法已废弃,代码上要进行大量修改,这条路貌似走不通
2 、另一个方法就是集群,但是感觉百万量级上集群是不是杀鸡用牛刀了?
所以有两个问题想请教各位
Q1 :尽量不大量修改代码的情况下, MongoDB 3.X 哪个版本可用?
Q2 :上集群是否大材小用,毕竟在 MongoDB 上没有太多经验
1
suren1986 2017-03-27 14:14:42 +08:00
1. 大量查询为啥不做 replica?
2. 写入性能低的原因是什么?只是磁盘么?换 SSD ? |
2
scofieldpeng 2017-03-27 14:18:14 +08:00
连接池和异步有试过么?大并发查询每次都打到数据库?有考虑过热点缓存么?
|
3
scofieldpeng 2017-03-27 14:18:38 +08:00
我觉得把这个做好了,你应该能撑一段时间了
|
4
we3613040 2017-03-27 14:20:44 +08:00
只是百万级别的就不行了?不是吧
|
5
zacard 2017-03-27 14:43:15 +08:00
其实想问,这个量级为何不用 mysql 。
然后,你们应该先测试下单纯写的效率。读的话索引是否合理等。 集群也可以啊, mongodb 上集群简单。只是还是觉得你们这条路走下去很可能还是得回到 mysql 。。。 |
6
frostfall OP @suren1986 之前因为大并发下硬盘太慢, page faults 太多,于是换了一台新服务器,只跑 MongoDB 。平时内存占用只在 1GB 左右, 但是并发测试下依旧很慢,这时 Mongostat 查看 page faults 并不多,内存占用升到 4GB 左右
|
7
icegreen 2017-03-27 15:07:55 +08:00
百万量级应该单机是能抗住的, 建议分析一下瓶颈在哪里, 优化一下程序;
|
8
sampeng 2017-03-27 17:06:58 +08:00
超过十万就需要,不仅仅是扛量,更多的是主从,挂了还能接着用。。。
另外。。。为毛不用 mysql 。。。 mongodb 我知道的都切回了 mysql 。。。量越大切的越早。还是有这么多要当小白鼠的 |
9
sampeng 2017-03-27 17:08:35 +08:00
没有经验还要去趟雷。。
|
10
frostfall OP 测试环境模拟并发,几乎不能复现,推测应该不是性能问题,看来现在要转变思路解决问题了
|
11
tinybaby365 2017-03-27 18:14:30 +08:00
写入是修改,还是新插入?修改如果超过原 doc 的 size ,就会新开辟空间并产生碎片。
查询,可以加索引,组合索引。 卡的时候最好用 MMS 看看。 |
12
popbones 2017-03-27 18:18:32 +08:00
每个月都要被 MongoDB 坑一次的来围观
|
13
mathgl 2017-03-27 18:54:12 +08:00
mongodb 2.6 问题挺多的。不推荐使用。
mongodb 就我使用经验而言,查询和插入的性能和 pg 比较并没有优势。 |
14
imzshh 2017-03-27 19:38:34 +08:00
百万量级是个什么概念?百万并发请求?
|
15
rrfeng 2017-03-27 20:02:42 +08:00
page faults 太多是内存配的太小吧?
mmap 还是 wt 引擎? 我们集群过亿的 collection 有好几个,也就 2 节点读 1 primary 写。 根据我的经验,大部分性能问题是因为没有 mongodb 经验,从根本上来说除了因为实现不同导致一些差异(例如没有事务)外,性能上都有解决方案。只是 mysql 现成文档多, mongodb 需要自己钻研。 |
16
rrfeng 2017-03-27 20:02:59 +08:00
另外单机你不怕丢么?
|
17
suyuanhxx 2017-03-27 22:28:15 +08:00
面试时被问到 mongodb 的使用业务场景,我瞬间懵逼了......我回答的是用户无规律行为(如点击链接,数据统计分类不明确时)
|
18
sujin190 2017-03-27 23:51:51 +08:00
也从 2.6 升级到 3.2 ,没遇到什么不兼容问题啊。。
不过话说用了许久 mongodb 整体感觉确实有点怪,压力不高但是慢查询一堆,整体性能还是很靠谱的,不过 3 的 wt 引擎感觉性能更稳定一些,用来做日志缓冲,每天写几千万也毫无压力 |
19
FrankFang128 2017-03-28 00:47:12 +08:00
少用 mongodb 啊,被坑过
|
20
zaishanfeng 2017-03-28 07:18:38 +08:00 via Android
mongo 优化的好比 mysql 方便的多, 问题是版本更新太快,兼容性不好,网上的资料又比较杂,用起来比较费劲。那些说 mongo 坑的, 估计是习惯了关系数据库那一套,不想折腾吧
|
21
wakaka 2017-03-28 09:47:37 +08:00
集群都不做,看来数据不重要
|
22
frostfall OP 之前发的不知道为什么没有了,测试环境模拟大并发不能复现,看样子不是性能问题,已经考虑做 replica 实现容灾了,谢谢各位
|