• 请不要在回答技术问题时复制粘贴 AI 生成的内容
frostfall
V2EX  ›  程序员

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

  •  
  •   frostfall · Mar 27, 2017 · 9365 views
    This topic created in 3513 days ago, the information mentioned may be changed or developed.

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

    想到的解决方法:

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

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

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

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

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

    22 replies  •  2017-03-28 13:57:28 +08:00
    suren1986
    suren1986
    Mar 27, 2017
    1
    1. 大量查询为啥不做 replica?
    2. 写入性能低的原因是什么?只是磁盘么?换 SSD ?
    scofieldpeng
    scofieldpeng
    Mar 27, 2017
    2
    连接池和异步有试过么?大并发查询每次都打到数据库?有考虑过热点缓存么?
    scofieldpeng
    scofieldpeng
    Mar 27, 2017
    3
    我觉得把这个做好了,你应该能撑一段时间了
    we3613040
    we3613040
    Mar 27, 2017
    4
    只是百万级别的就不行了?不是吧
    zacard
    zacard
    Mar 27, 2017
    5
    其实想问,这个量级为何不用 mysql 。

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

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

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

    卡的时候最好用 MMS 看看。
    popbones
    popbones
    Mar 27, 2017
    12
    每个月都要被 MongoDB 坑一次的来围观
    mathgl
    mathgl
    Mar 27, 2017
    13
    mongodb 2.6 问题挺多的。不推荐使用。

    mongodb 就我使用经验而言,查询和插入的性能和 pg 比较并没有优势。
    imzshh
    imzshh
    Mar 27, 2017
    14
    百万量级是个什么概念?百万并发请求?
    rrfeng
    rrfeng
    Mar 27, 2017
    15
    page faults 太多是内存配的太小吧?
    mmap 还是 wt 引擎?

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

    根据我的经验,大部分性能问题是因为没有 mongodb 经验,从根本上来说除了因为实现不同导致一些差异(例如没有事务)外,性能上都有解决方案。只是 mysql 现成文档多, mongodb 需要自己钻研。
    rrfeng
    rrfeng
    Mar 27, 2017
    16
    另外单机你不怕丢么?
    suyuanhxx
    suyuanhxx
    Mar 27, 2017
    17
    面试时被问到 mongodb 的使用业务场景,我瞬间懵逼了......我回答的是用户无规律行为(如点击链接,数据统计分类不明确时)
    sujin190
    sujin190
    Mar 27, 2017
    18
    也从 2.6 升级到 3.2 ,没遇到什么不兼容问题啊。。
    不过话说用了许久 mongodb 整体感觉确实有点怪,压力不高但是慢查询一堆,整体性能还是很靠谱的,不过 3 的 wt 引擎感觉性能更稳定一些,用来做日志缓冲,每天写几千万也毫无压力
    FrankFang128
    FrankFang128
    Mar 28, 2017
    19
    少用 mongodb 啊,被坑过
    zaishanfeng
    zaishanfeng
    Mar 28, 2017 via Android
    20
    mongo 优化的好比 mysql 方便的多, 问题是版本更新太快,兼容性不好,网上的资料又比较杂,用起来比较费劲。那些说 mongo 坑的, 估计是习惯了关系数据库那一套,不想折腾吧
    wakaka
    wakaka
    Mar 28, 2017
    21
    集群都不做,看来数据不重要
    frostfall
    frostfall
    OP
    Mar 28, 2017
    22
    之前发的不知道为什么没有了,测试环境模拟大并发不能复现,看样子不是性能问题,已经考虑做 replica 实现容灾了,谢谢各位
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1438 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 45ms · UTC 11:27 · PVG 19:27 · LAX 03:27 · JFK 06:27
    ♥ Do have faith in what you're doing.