zoukankan      html  css  js  c++  java
  • Elasticsearch部署清单---前期准备工作

    1.了解ES集群拓扑结构
    当我们启动Elasticsearch的实例,就会启动至少一个节点。相同集群名的多个节点的连接组成一个集群,

    在默认情况下,集群中的每个节点都可以处理Http请求和集群节点的数据传输。

    集群中的所有的节点都知道集群中其他所有的节点,可以将客户端请求转发到适当的节点。

    默认情况下,节点同时是主节点和数据节点,这适合小集群(3个节点);大于3个节点后,分离主节点和数据节点变得非常重要。

    1. 配置线程池

    尽量不要动线程池这个配置,如果要动,建议改为: int(( 核心数 3 )/ 2 )+ 1 。

    同时满足:不允许bulk和’indexing’线程池的大小大于CPU内核数。

    举例:24核处理器,检索服务器是24核,所以:线程池的大小 =(24*3)/2+1=37,

    同时要满足cpu核数为24。37和24取最小值,应该选择24。

    默认的队列大小是1000,
    现在的问题是:并发请求数据超过了队列最大的大小,导致出错。

    可能的解决方案:

    1)、增加队列大小;(太大了,可能会导致内存溢出)

    2)、增加节点数和副本数。

    队列大小:
    在elasticsearch.yml中新增如下配置:

        ## Threadpool Settings
        ### Search pool
        thread_pool.search.size: 24
        thread_pool.search.queue_size: 2000
    
        #Bulk pool
        thread_pool.bulk.size: 24
        thread_pool.bulk.queue_size: 1000
        # Index pool
    
        thread_pool.index.size: 24
        thread_pool.index.queue_size: 1000
    
    

    如果你的批量请求数目高于队列大小,将会出现RemoteTransportException异常。

    1. 配置堆内存
      Elasticsearch 默认安装后设置的堆内存是 1 GB。
      修改 jvm.options配置文件。
    # Xms represents the initial size of total heap space
    # Xmx represents the maximum size of total heap space
    -Xms4g
    -Xmx4g
    

    确保堆内存最小值( Xms )与最大值( Xmx )的大小是相同的,防止程序在运行时改变堆内存大小, 这是一个很耗系统资源的过程。

    注意:
    最大可分配堆内存大小为: 32GB与当前ES宿主机内存二者的最小值。

    举例1):ES宿主机内存:128GB,可供分配的堆内存:32GB。(建议31GB)
    举例2):ES宿主机内存:32GB,可供分配的堆内存:16GB。

    1. 禁止swapping操作
      elasticsearch.yml 文件中的Memory部分,修改设置如下:
    bootstrap.memory_lock : true
    

    核心原因:内存交换 到磁盘对服务器性能来说是 致命 的。

    1. 配置文件描述符数目
      步骤1)设置环境变量。
    vim /etc/profile
    

    增加

    ulimit -n 65535
    

    用以设定同一时间打开的文件数的最大值为65535。
    source /etc/profile 使得命令生效。

    步骤2)修改limits.conf配置文件。

    /etc/security/limits.conf
    

    增加

    * soft nofile 65536
    * hard nofile 65536
    

    用来限制打开文件数65535

    步骤3)切换到Elasticsearch用户,使用ulimit -a 查看是否修改成功。

    # ulimit -a
    

    核心原因: Elasticsearch 在节点和 HTTP 客户端之间进行通信也使用了大量的套接字(注:sockets)。 所有这一切都需要足够的文件描述符。

    而: 许多现代的 Linux 发行版本,每个进程默认允许一个微不足道的 1024 文件描述符。这对一个小的 Elasticsearch 节点来说实在是太 低 了,更不用说一个处理数以百计索引的节点。

    1. 修改最大映射数量MMP
      Elasticsearch 对各种文件混合使用了 NioFs( 非阻塞文件系统)和 MMapFs ( 内存映射文件系统)。

    请确保你配置的最大映射数量,以便有足够的虚拟内存可用于 mmapped 文件。这可以暂时设置:

    sysctl -w vm.max_map_count=262144
    

    或者你可以在 /etc/sysctl.conf 通过修改 vm.max_map_count 永久设置它。

    # tail -f /etc/sysctl.conf 
    vm.max_map_count=262144
    
  • 相关阅读:
    每日总结6.14
    每日总结6.13
    每日总结6.12
    每日总结6.11
    用户故事与敏捷方法阅读笔记4
    用户故事与敏捷方法阅读笔记3
    团队冲刺第一阶段燃尽图
    团队冲刺10
    智能物联网:将人工智能的力量带入物联网
    MyEclipse修改文件后Building workspace时间过长
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/12876658.html
Copyright © 2011-2022 走看看