上线必备 | 高性能ES5.X部署配置清单

robinent
发布于 2022-4-27 17:17
浏览
0收藏

上线必备 | 高性能ES5.X部署配置清单-鸿蒙开发者社区

网上当前(截止20170914)流传的各种配置文件普通存在以下问题: 

 

1)版本低,不能和当前版本5.X匹配。 

2)5.X的配置本身较1.X,2.X就有很大不同,原有配置已不适用。 

3)ES英文、中文文档也没有及时更新。

 

现在,确保ES5.X的高性能到底需要哪些配置越发令人神往

以下清单内容参考了ES官网文档,且都是在ES5.4.0的环境中验证过的,请放心使用。

 

上线必备 | 高性能ES5.X部署配置清单-鸿蒙开发者社区

您需要确定您的部署拓扑,以便做出正确的Elasticsearch配置决策。

 

当我们启动Elasticsearch的实例,就会启动至少一个节点。相同集群名的多个节点的连接组成一个集群

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

 

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


了解节点的类别,如下

上线必备 | 高性能ES5.X部署配置清单-鸿蒙开发者社区

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

上线必备 | 高性能ES5.X部署配置清单-鸿蒙开发者社区

尽量不要动线程池这个配置,如果要动,建议改为: 
int(( 核心数  3 )/ 2 )+ 1 。 
同时满足:不允许bulk和’indexing’线程池的大小大于CPU内核数。

 

举例:24核处理器,检索服务器是24核,所以:线程池的大小

 

=(24*3)/2+1=37, 

 

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

 

默认的队列大小是1000, 


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

 

可能的解决方案: 

 

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

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

队列大小: 
在elasticsearch.yml中新增如下配置(5.X已经验证):

 

上线必备 | 高性能ES5.X部署配置清单-鸿蒙开发者社区

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

 

上线必备 | 高性能ES5.X部署配置清单-鸿蒙开发者社区Elasticsearch 默认安装后设置的堆内存是 1 GB。

上线必备 | 高性能ES5.X部署配置清单-鸿蒙开发者社区

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

 

修改后查看:

上线必备 | 高性能ES5.X部署配置清单-鸿蒙开发者社区
注意: 
最大可分配堆内存大小为: 
32GB与当前ES宿主机内存二者的最小值。 

上线必备 | 高性能ES5.X部署配置清单-鸿蒙开发者社区

在你的 elasticsearch.yml 文件中的Memory部分,修改设置如下:

上线必备 | 高性能ES5.X部署配置清单-鸿蒙开发者社区核心原因:内存交换 到磁盘对服务器性能来说是 致命 的。 
早期的版本叫:bootstrap.mlockall,

 

5.X版本改名为:bootstrap.memory_lock。 

上线必备 | 高性能ES5.X部署配置清单-鸿蒙开发者社区切换到ES的启动账户,如Elasticsearch。

上线必备 | 高性能ES5.X部署配置清单-鸿蒙开发者社区

上线必备 | 高性能ES5.X部署配置清单-鸿蒙开发者社区

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

 

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

 

上线必备 | 高性能ES5.X部署配置清单-鸿蒙开发者社区

 

Elasticsearch 对各种文件混合使用了 NioFs( 非阻塞文件系统)和 MMapFs ( 内存映射文件系统)。

上线必备 | 高性能ES5.X部署配置清单-鸿蒙开发者社区

上线必备 | 高性能ES5.X部署配置清单-鸿蒙开发者社区确保ES的高性能是一个永恒的话题,还有很长的路要走。 
让我们一起精进,高效习得ES技能!

 

[1] 5.X版本的配置变化: 
https://www.elastic.co/guide/en/elasticsearch/reference/current/breaking_50_settings_changes.html 
[2] 线程池大小问题 
https://github.com/elastic/elasticsearch/issues/15582 
[3] swap配置 
https://www.elastic.co/guide/en/elasticsearch/reference/master/setup-configuration-memory.html

分类
收藏
回复
举报
回复
    相关推荐