【面试】Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法?

Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法?

在这里插入图片描述

Elasticsearch是一个分布式搜索和分析引擎,它在Linux环境下的性能和稳定性可以通过一些优化方法进行提升。以下是一些针对Linux环境下Elasticsearch部署的优化方法:


1. 内存配置:
   - 推荐使用64GB内存的机器,但32GB和16GB的机器也是常见的选择。少于8GB的内存可能会导致性能下降。
   - 如果有选择更快的CPU和更多的核心,选择更多的核心会更好。多个核心提供的并发能力比稍微更快的时钟频率更重要。


2. 存储选择:
   - 使用SSD(固态硬盘)可以获得更好的性能。基于SSD的节点可以提升查询和索引的性能。如果经济条件允许,SSD是一个不错的选择。

3. 集群布局:
   - 避免跨越多个数据中心的集群部署,尽量避免跨大的地理距离。


4. JVM设置:
   - 确保运行应用程序的JVM和服务器上运行的JVM完全相同。在Elasticsearch中使用Java的本地序列化。

5. 集群重启优化:
   - 通过设置`gateway.recover_after_nodes`、`gateway.expected_nodes`、`gateway.recover_after_time`参数,可以在集群重启时避免过多的分片交换,从而缩短数据恢复的时间。

6. 节点发现:
   - Elasticsearch默认使用单播(unicast)发现,以防止节点意外加入集群。只有在同一台机器上运行的节点才会自动组成集群。建议使用单播而不是组播(multicast)。

7. 垃圾回收器和线程池:
   - 不建议随意修改垃圾回收器(CMS)和各个线程池的大小。

8. 内存设定:
   - 通过设置环境变量`ES_HEAP_SIZE`,将内存的一半分配给Lucene(但不超过32GB)。

9. 避免内存交换:
   - 内存交换到磁盘会对服务器性能产生严重影响。确保避免内存交换到磁盘,因为交换操作会导致延迟增加,严重影响性能。

10. 文件描述符:
    - Lucene使用大量文件,而Elasticsearch在节点和HTTP客户端之间的通信也使用大量套接字。确保服务器具有足够的文件描述符,可以增加文件描述符的数量,例如设置为64,000。

补充:索引阶段性能提升方法:

1. 使用批量请求并调整其大小:
   - 使用批量请求可以提高性能,根据情况调整每个批量的大小,通常在5-15MB之间。

2. 存储选择:
   - 使用SSD可以提升索引阶段的性能。

3. 段和合并:
   - 调整合并速率,对于机械硬盘,可以使用默认的20MB/s设置。如果使用SSD,可以考虑增加到100-200MB/s。对于批量导入,可以完全关闭合并限流。还可以增加`index.translog.flush_threshold_size`设置,将默认的512MB增加到更大的值,例如1GB,这样可以在一次清空触发时在事务日志中积累更大的段。

4. 刷新间隔:
   - 如果搜索结果不需要近实时的准确性,可以将每个索引的`index.refresh_interval`设置为30秒
5. 关闭副本:
   - 对于大规模批量导入,可以通过设置`index.number_of_replicas: 0`关闭副本,以提高性能。

以上是在部署Elasticsearch时针对Linux环境的一些优化方法。根据实际情况和需求,可以选择适合的优化策略来提升性能和稳定性。
在这里插入图片描述

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-31 12:22:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-31 12:22:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-31 12:22:01       87 阅读
  4. Python语言-面向对象

    2024-03-31 12:22:01       96 阅读

热门阅读

  1. Vue-前端应用开发平时作业第二章

    2024-03-31 12:22:01       28 阅读
  2. Ubuntu下udp通信

    2024-03-31 12:22:01       41 阅读
  3. es与mysql同步问题

    2024-03-31 12:22:01       39 阅读
  4. Leetcode 3. 无重复字符的最长子串

    2024-03-31 12:22:01       41 阅读
  5. 带头双向循环链表的实现及注释教学

    2024-03-31 12:22:01       39 阅读
  6. 面试碰到的一些问题

    2024-03-31 12:22:01       34 阅读
  7. PHP - ZipArchive上传、下载实例

    2024-03-31 12:22:01       40 阅读
  8. HTML 中的 jQuery 事件处理与 Ajax 异步请求

    2024-03-31 12:22:01       37 阅读
  9. 【图像处理】-1.图像二值化

    2024-03-31 12:22:01       39 阅读
  10. Mysql 常用语句及用法记录

    2024-03-31 12:22:01       34 阅读