Elasticsearch部署清单---前期准备工作

摘要:
安装后,堆内存配置的Elasticsearch默认为1GB。源/etc/profile使命令有效/etc/security/limits。Conf添加了*softnofile65536*hardnofile65536以限制打开文件的数量65535步骤3)切换到Elastic搜索用户并使用ulimit-a检查修改是否成功#ulimit-a核心原因:Elastic search还使用大量套接字在节点和HTTP客户端之间进行通信。这对于一个小的Elastic搜索节点来说太低了,更不用说处理数百个索引的节点了。修改映射的最大数量MMP Elastic搜索将NioF和MMapF混合用于各种文件。

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

免责声明:文章转载自《Elasticsearch部署清单---前期准备工作》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Netscreen防火墙功能从零开始学习GDI+ (二) 基本概念与基本操作下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

boost之ThreadPool

threadpool是基于boost库实现的一个线程池子库,但线程池实现起来不是很复杂。我们从threadpool中又能学到什么东西呢? 它是基于boost库实现的,如果大家对boost库有兴趣,看看一个简单的实现还是可以学到点东西的。 threadpool基本功能 1、任务封装,包括普通任务(task_func)和优先级任务(prio_task_fun...

MySQL MySql连接数与线程池

MySql连接数与线程池 by:授客 QQ:1033553122   连接数1、  查看允许的最大并发连接数 SHOW VARIABLES LIKE 'max_connections';   2、  修改最大连接数 方法1:临时生效 SET GLOBAL max_connections=200; SET语法参考: http://dev.my...

[ELK] Elasticsearch 安装/配置、启动/停止、加节点/重启

Elasticsearch 在不同环境上支持的安装方式很多,有源码安装、二进制安装、docker安装、rpm包等管理器安装。 具体的,根据应用的实际情况选择即可。 完成可测试开发环境的建立后,需要进一步配置为生产环境做准备: 配置 Elasticsearch。 配置重要的 Elasticsearch 设置。 配置重要的系统设置。 引导程序检查 让一些重要配...

ElasticSearch 分组查询的几个例子

facets接口可以根据query返回统计数据,其中的 terms_stats 是分组统计,根据key的情况返回value的统计数据,类似group by的意思。 "terms_stats" : { "key_field" : "", "value_field" : "" } 例子:查询每个ip的请求执行时间 查询语句: 1: { 2: "si...

ElasticSearch7.4.2安装、使用以及与SpringBoot的整合

目录 ElasticSearch 安装 运行 初步检索 新增文档 查询文档 更新文档 删除文档/索引 批量操作 进阶检索 Search API Query DSL match bool filter term 字段.keyword以及match区分 Aggregations Mapping 创建映射关系 查看映射信息 修改映射信息...

Elasticsearch安装ik中文分词插件(四)

一、IK简介   IK Analyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始,IKAnalyzer已经推出了4个大版本。最初,它是以开源项目Luence为应用主体的,结合词典分词和文法分析算法的中文分词组件。从3.0版本开 始,IK发展为面向Java的公用分词组件,独立于Lucene项目,同时提供了...