Elasticsearch在部署时,对Linux的设置有哪些优化方法?
Posted 四猿外
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Elasticsearch在部署时,对Linux的设置有哪些优化方法?相关的知识,希望对你有一定的参考价值。
1、64 GB 内存的机器是非常理想的, 但是32 GB 和16 GB 机器也是很常见的。少于8 GB 会适得其反。
2、如果你要在更快的CPUs 和更多的核心之间选择,选择更多的核心更好。多个内核提供的额外并发远胜过稍微快一点点的时钟频率。
3、如果你负担得起SSD,它将远远超出任何旋转介质。基于SSD 的节点,查询和索引性能都有提升。如果你负担得起,SSD 是一个好的选择。
4、即使数据中心们近在咫尺,也要避免集群跨越多个数据中心。绝对要避免集群跨越大的地理距离。
5、请确保运行你应用程序的JVM 和服务器的JVM 是完全一样的。在Elasticsearch 的几个地方, 使用Java 的本地序列化。
6、通过设置gateway.recover_after_nodes、gateway.expected_nodes、gateway.recover_after_time 可以在集群重启的时候避免过多的分片交换, 这可能会让数据恢复从数个小时缩短为几秒钟。
7、Elasticsearch 默认被配置为使用单播发现,以防止节点无意中加入集群。只有在同一台机器上运行的节点才会自动组成集群。最好使用单播代替组播。
8、不要随意修改垃圾回收器( CMS)和各个线程池的大小。
9、把你的内存的(少于)一半给Lucene(但不要超过32 GB!) ,通过ES_HEAP_SIZE 环境变量设置。
10、内存交换到磁盘对服务器性能来说是致命的。如果内存交换到磁盘上, 一个100 微秒的操作可能变成10 毫秒。再想想那么多10 微秒的操作时延累加起来。不难看出swapping 对于性能是多么可怕。
11、Lucene 使用了大量的文件。同时, Elasticsearch 在节点和HTTP 客户端之间进行通信也使用了大量的套接字。所有这一切都需要足够的文件描述符。你应该增加你的文件描述符,设置一个很大的值,如64,000。
补充:索引阶段性能提升方法
1、使用批量请求并调整其大小: 每次批量数据5– 15 MB 大是个不错的起始点。
2、存储:使用SSD
3、段和合并:Elasticsearch 默认值是20 MB/s,对机械磁盘应该是个不错的设置。如果你用的是SSD,可以考虑提高到100– 200 MB/s。如果你在做批量导入,完全不在意搜索,你可以彻底关掉合并限流。另外还可以增加index.translog.flush_threshold_size 设置,从默认的512 MB 到更大一些的值, 比如1 GB,这可以在一次清空触发的时候在事务日志里积累出更大的段。
4、如果你的搜索结果不需要近实时的准确度, 考虑把每个索引的index.refresh_interval 改到30s。
5、如果你在做大批量导入,考虑通过设置index.number_of_replicas: 0 关闭副本。
以上是关于Elasticsearch在部署时,对Linux的设置有哪些优化方法?的主要内容,如果未能解决你的问题,请参考以下文章
Elasticsearch 在部署时,对Linux 的设置有哪些优化方法?
Elasticsearch 在部署时,对 Linux 的设置有哪些优化方 法?