V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
frostfall
V2EX  ›  程序员

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

  •  
  •   frostfall · Mar 27, 2017 · 8923 views
    This topic created in 3322 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
        1
    suren1986  
       Mar 27, 2017
    1. 大量查询为啥不做 replica?
    2. 写入性能低的原因是什么?只是磁盘么?换 SSD ?
    scofieldpeng
        2
    scofieldpeng  
       Mar 27, 2017
    连接池和异步有试过么?大并发查询每次都打到数据库?有考虑过热点缓存么?
    scofieldpeng
        3
    scofieldpeng  
       Mar 27, 2017
    我觉得把这个做好了,你应该能撑一段时间了
    we3613040
        4
    we3613040  
       Mar 27, 2017
    只是百万级别的就不行了?不是吧
    zacard
        5
    zacard  
       Mar 27, 2017
    其实想问,这个量级为何不用 mysql 。

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

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

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

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

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

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

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