首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
华为云
V2EX  ›  程序员

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

  •  
  •   Reign · 132 天前 · 2433 次点击
    这是一个创建于 132 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    这两者选哪个比较好?

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

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

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