ElasticSearch性能优化:垃圾回收、限流与预热器全解析
1. 垃圾回收策略
在使用 ElasticSearch 时,我们通常应追求更频繁、更短时间的垃圾回收,而非单次长时间的垃圾回收。这是为了确保应用程序能以恒定的性能运行,且垃圾回收工作对 ElasticSearch 透明。因为大型垃圾回收会触发“停止世界”事件,导致 ElasticSearch 短时间冻结,使查询变慢并暂停索引过程。
1.1 调整 ElasticSearch 中的垃圾回收器工作
我们了解了垃圾回收器的工作原理和问题诊断方法后,还需知道如何更改 ElasticSearch 启动参数来改变垃圾回收器的工作方式,这取决于 ElasticSearch 的运行方式,下面介绍两种常见情况:
- 使用标准启动脚本:在使用标准启动脚本时,若要添加额外的 JVM 参数,需将其包含在
JAVA_OPTS环境属性中。例如,在类 Linux 系统中,若要将-XX:+UseParNewGC -XX:+UseConcMarkSweepGC添加到 ElasticSearch 启动参数中,可执行以下命令:
export JAVA_OPTS="-XX:+UseParNewGC -XX:+UseConcMarkSweepGC"为检查该属性是否被正确设置,可运行以下命令:
echo $JAVA_