ElasticSearch中的JVM性能调优

ElasticSearch6.3.2 中的JVM性能调优

前一段时间被人问了个问题:在使用ES的过程中有没有做过什么JVM调优措施?

在我搭建ES集群过程中,参照important-settings官方文档来的,并没有对JVM参数做过多的调整。但谈到JVM配置参数,少不了操作系统层面上的一些配置参数,比如 page cache 和文件描述符的个数:(/etc/security/limits.conf)。另外ES jvm.options配置文件也针对JVM参数做了一些优化,这里简要介绍一下ElasticSearch中与jvm相关的各个配置参数:

  • 将 Xms 和 Xmx 设置成一样大 避免JVM堆的动态调整给应用进程带来"不稳定"。参考:Heap Tuning Parameters
  • By default, the JVM grows or shrinks the heap at each GC to try to keep the proportion of free space to the living objects at each collection within a specific range. This range is set as a percentage by the parameters -XX:MinHeapFreeRatio=minimum and -XX:MaxHeapFreeRatio=maximum; and the total size bounded by -Xms and -Xmx
  • 预留足够的内存空间给page cache。假设一台32GB内存的机器,配置16GB内存给ES进程使用,另外16GB给page cache,而不是将 xmx 设置成32GB。
  • 禁用内存交换(/proc/sys/vm/swappiness),后面解释为什么要禁用内存交换?
  • 配置JVM参数:-XX:+AlwaysPreTouch 减少新生代晋升到老年代时停顿。JDK官方文档关于 AlwaysPreTouch 的解释是:Pre-touch the Java heap during JVM initialization. Every page of the heap is thus demand-zeroed during initialization rather than incrementally during application execution.
    也就是说:在启动时就把参数里说好了的内存全部都分配了,会使得启动慢上一点,但后面访问时会更流畅,比如页面会连续分配,比如不会在晋升新生代到老生代时才去访问页面,导致GC停顿时间加
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于Elasticsearch的单节点部署调优,可以考虑以下几个方面: 1. 堆内存设置:默认情况下,Elasticsearch将堆内存分配给JVM的50%,可通过修改`jvm.options`文件的`-Xms`和`-Xmx`参数来调整。适当增加堆内存大小可以提高性能,但要确保不会超出可用内存。 2. 线程池配置:Elasticsearch使用线程池来处理各种操作,包括读取、写入和搜索。可以通过修改`elasticsearch.yml`文件的以下参数来优化线程池的配置: - `thread_pool.write.queue_size`:写入操作的队列大小,默认是200。 - `thread_pool.search.queue_size`:搜索操作的队列大小,默认是1000。 增加队列大小可以在高负载时缓冲请求,减少请求被拒绝的可能性。 3. 索引和分片配置:考虑数据量和查询需求来合理设置索引的分片数量。通常情况下,每个节点上的分片数不宜过多,建议每个节点控制在20个以下。 4. JVM垃圾回收调优:可以通过调整JVM的垃圾回收策略来提高性能。可以修改`jvm.options`文件的`-XX:+UseConcMarkSweepGC`参数启用CMS垃圾回收器,或者使用G1垃圾回收器。 5. 文件描述符限制:Elasticsearch使用大量的文件句柄来处理数据和查询操作。确保操作系统的文件描述符限制足够大,可以通过修改`/etc/security/limits.conf`文件来增加限制。 以上是一些常见的调优建议,具体的调优策略还需要根据具体的部署环境和需求来进行调整。同时,建议在调优之前对系统进行性能测试和监控,以便及时发现问题并进行优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值