• ElasticSearch 优化总结


    ElasticSearch 优化总结

    目录

    Linux Release: CentOS release 6.4 
    ES Version: 2.x

    OS

    OS 参数说明

    vm.swappiness
    • 1
    • ES 推荐将此参数设置为 1,大幅降低 swap 分区的大小,强制最大程度的使用内存。

      注意,这里不要设置为 0, 这会很可能会造成 OOM。

    net.core.somaxconn
    • 1
    • 定义了每个端口最大的监听队列的长度。
    vm.max_map_count
    • 1
    • 限制一个进程可以拥有的VMA(虚拟内存区域)的数量。虚拟内存区域是一个连续的虚拟地址空间区域。当 VMA 的数量超过这个值,OOM…
    fs.file-max
    • 1
    • 设置 Linux 内核分配的文件句柄的最大数量。
    user    soft     nofile             65535
    user    hard     nofile             65535
    • 1
    • 2
    • 设置具体用户可用的文件描述符数量。
    user    soft     memlock          unlimited
    user    hard     memlock          unlimited
    • 1
    • 2
    • 锁定内存,拒绝 swapping
    session required pam_limits.so
    • 1
    • 这是告诉Linux在用户完成系统登录后,应该调用pam_limits.so模块来设置系统对该用户可使用的各种资源数量的最大限制(包括用户可打开的最大文件数限制),而pam_limits.so模块就会从/etc/security/limits.conf文件中读取配置来设置这些限制值。修改完后保存此文件
    bootstrap.mlockall: true
    • 1
    • 运行JVM锁住内存,不让JVM写入swapping,避免降低ES的性能。
    indices.fielddata.cache.size: 40%
    indices.cache.filter.size: 30%
    indices.cache.filter.terms.size: 1024mb
    • 1
    • 2
    • 3
    • 设置各部分所占用的缓存比例,默认是没有限制的,很可能会撑爆 JVM 堆空间(设置 fielddata 会影响搜索性能)。
    threadpool.search.type: cached
    threadpool.search.size: 100
    threadpool.search.queue_size: 2000
    • 1
    • 2
    • 3
    • 线程池的设置, size 默认是 处理器核数的 5 倍。
    transport.tcp.compress
    • 1
    • 设置所有节点间的传输数据是经过压缩的。默认不压缩。
    ES_HEAP_SIZE
    • 1
    • 默认 1G,做好不要超过 32 G。

    OS 参数配置

    打开 sysctl.conf

    vim /etc/sysctl.conf
    • 1
    vm.swappiness=1                          # 关闭 swapping
    net.core.somaxconn=65535                 # 上调端口的最大连接数
    vm.max_map_count=262144                  #(default) http://www.redhat.com/magazine/001nov04/features/vm
    fs.file-max=518144                       # http://www.tldp.org/LDP/solrhe/Securing-Optimizing-Linux-RH-Edition-v1.3/chap6sec72.html
    • 1
    • 2
    • 3
    • 4

    如果不想重启,可以通过sysctl -p动态加载/etc/sysctl.conf文件,但建议这样做之前先清空swap。

    然后,打开 limits.conf

    vim /etc/security/limits.conf
    • 1

    注意,下面这些配置要保证 elastic search 要能够访问到,所以强烈建议为 es 新创建一个用户,比如 elasticsearch

    elasticsearch    soft    nofile          65535
    elasticsearch    hard    nofile          65535
    elasticsearch    soft    memlock         unlimited
    elasticsearch    hard    memlock         unlimited
    • 1
    • 2
    • 3
    • 4

    为了使以上参数永久生效,还要设置两个地方

    vim /etc/pam.d/common-session-noninteractive
    vim /etc/pam.d/common-session
    • 1
    • 2

    添加如下属性

    session required pam_limits.so
    • 1

    可能需要重启机器!

    ES

    打开 elasticsearch 的配置文件 elasticsearch.yml,添加如下属性

    bootstrap.mlockall: true
    
    transport.tcp.compress: true
    
    indices.fielddata.cache.size: 40%
    indices.cache.filter.size: 30%
    indices.cache.filter.terms.size: 1024mb
    
    threadpool:
        search:
            type: cached
            size: 100
            queue_size: 2000
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    设置环境变量,最好在 ~/.bashrc,或者是 /etc/profile 下设置:

    # 不要超过 32 G
    export ES_HEAP_SIZE=4g
    • 1
    • 2

    设置完后,source 一下。重启机器。

    重启完成后,查看 es 的信息:

    curl 'http://localhost:9200/?pretty'
    • 1

    优化完成。

    正因为当初对未来做了太多的憧憬,所以对现在的自己尤其失望。生命中曾经有过的所有灿烂,终究都需要用寂寞来偿还。
  • 相关阅读:
    WEB存储
    2D变形
    HTML5音频与视频
    HTML5 canvas元素
    HTML5表单
    Can't finish GitHub sharing process Successfully created project 'springcloud-parent' on GitHub,
    Intellij idea上传项目到github
    Git for Windows安装和基本设置
    Eclipse注释快捷键、如何生成API以及可能遇到的问题解决
    mysql忘记密码
  • 原文地址:https://www.cnblogs.com/candlia/p/11920301.html
Copyright © 2020-2023  润新知