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

对于百万行级别的数据用 ES 搜索,大内存+HDD 和小内存+SSD 哪个好?

  •  
  •   Reign · Jul 11, 2018 · 6305 views
    This topic created in 2856 days ago, the information mentioned may be changed or developed.

    目前网站有 650 万行数据,数据库大小 8.1G ,后期可能会增至 10G 左右,目前选择服务器:

    1. 内存 16G+50G 固态硬盘,硬盘 iops 在固态硬盘中属于中规中矩
    2. 内存 64G+4T 机械盘,硬盘 iops 在机械盘中属于中规中矩

    这两者选哪个比较好?

    另外,ES 能不能像 Redis 一样,将所有索引数据全部存储在内存中,不是热数据是所有数据,这样的话,64G 完全能装得下 8.1G 的数据了,那肯定选择第二台服务器读写更快了

    Supplement 1  ·  Jul 11, 2018
    非常感谢各位回答,貌似倾向于大内存方案的更多,请问一下,如果设置 ES 的内存为 32G,剩下的内存分配给 Redis 和 MySQL 还够不够?
    24 replies    2018-07-12 05:50:25 +08:00
    Reign
        2
    Reign  
    OP
       Jul 11, 2018
    @heeexy 谢谢,我看过,就是不知道对于我这种读远大于写的场景,到底内存和 SSD 哪个重要?
    xuminzhong
        3
    xuminzhong  
       Jul 11, 2018
    读大于写,内存重要,因为第一次读取后,如果内存有空闲的,OS 会一直缓存在内存里。
    ytmsdy
        4
    ytmsdy  
       Jul 11, 2018 via iPhone
    内存有 64g,就算把 10g 的数据全部加载到内存里也放的下啊
    yuqaf
        5
    yuqaf  
       Jul 11, 2018
    这么点数据,mysql 都足够了。。。
    heeexy
        6
    heeexy  
       Jul 11, 2018
    内存,尤其是如果还要搞聚合查询的话

    https://www.elastic.co/blog/a-heap-of-trouble
    Reign
        7
    Reign  
    OP
       Jul 11, 2018
    @ytmsdy ES 有没有一种模式可以让所有数据常驻内存
    AntonChen
        8
    AntonChen  
       Jul 11, 2018 via Android
    大内存,ES 就是玩内存的,只要是 open 状态的就会载入内存。个人建议单机 64G 内存,heap 配置一半
    alvin666
        9
    alvin666  
       Jul 11, 2018 via Android
    @Reign 大不了开虚拟内存盘,怎么看都是第二个搭配划得来
    crawl3r
        10
    crawl3r  
       Jul 11, 2018
    就算是 10g, mysql+ssd 完全够用了。最近在搞 2T 数据,mysql 分片+ssd 完全够了
    sparkssssssss
        11
    sparkssssssss  
       Jul 11, 2018
    这么点数据,选大内存啊
    可以划 10G+的内存创建一块盘,然后 es 的 data 放过去
    slixurd
        12
    slixurd  
       Jul 11, 2018
    mdos
        13
    mdos  
       Jul 11, 2018 via Android
    哈哈哈哈,翻到这标题的时候我小弟坐在边上,直接就问我“ es 文件管理器搜索还要问别人的嘛?”我我我 xswl
    heeexy
        14
    heeexy  
       Jul 11, 2018
    除了 heap 的 32G , 剩下的内存也会被 file cache 用上的 ,没有被浪费
    追求性能的话就不要再装别的了
    heeexy
        15
    heeexy  
       Jul 11, 2018
    当然 目前这个数据量确实很小 用啥工具 怎么玩应该都不会有压力的
    noNOno
        16
    noNOno  
       Jul 11, 2018
    @mdos 传播快乐,yxswl
    pynix
        17
    pynix  
       Jul 11, 2018
    肯定选内存型。。。
    blueskea
        18
    blueskea  
       Jul 11, 2018 via Android
    记得在哪看过,ES 单节点内存分配超过 32G 没有太大意义
    haoba
        19
    haoba  
       Jul 11, 2018
    主要看字段 mapping 的类型吧,如果需要全放内存的话,就指成 fielddata,这个是在 jvm heap 里面的。
    doc_values 是在磁盘内读的,不必放在 heap 里面,所以太大的内存是没有必要的,doc_values 是默认开启的。留出合适的内存给操作系统做 buffer 会性能更好一些。
    haoba
        20
    haoba  
       Jul 11, 2018
    太大的 jvm 内存,GC 时间一样会变长,没必要。
    ShineSmile
        21
    ShineSmile  
       Jul 11, 2018
    建议把虚拟内存对性能的拖慢考虑进去
    wayslog
        22
    wayslog  
       Jul 11, 2018
    这还用问么。。。。肯定是大内存+SSD 呀 /滑稽
    msg7086
        23
    msg7086  
       Jul 12, 2018
    10G 数据的话,16G 内存应该够了吧,再配 SSD 挺好的。
    说句实话,这两个配置跑起来差不多,都很快。
    大内存配机械盘也 OK。
    当然最理想肯定了是 32G+SSD 了。
    wwhc
        24
    wwhc  
       Jul 12, 2018
    选 SSD + 16G ZRAM
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   964 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 65ms · UTC 20:10 · PVG 04:10 · LAX 13:10 · JFK 16:10
    ♥ Do have faith in what you're doing.