在部署的 Elasticsearch 集群中,我们遇到了频繁的 CPU 使用率飙升问题,导致某些节点宕机。这种情况不仅影响了集群的稳定性和可靠性,还增加了维护成本和潜在的数据丢失风险。为了改善这种情况,我们决定更换 Elasticsearch 集群所使用的 JDK 版本,以优化性能并减少资源消耗。
当前版本
[root@test19-server08 elasticsearch]# /usr/share/elasticsearch/jdk/bin/java -version
openjdk version "22.0.1" 2024-04-16
OpenJDK Runtime Environment (build 22.0.1+8-16)
OpenJDK 64-Bit Server VM (build 22.0.1+8-16, mixed mode, sharing)
[root@test19-server08 bin]# curl -X GET "localhost:9200/_nodes?filter_path=**.jvm*&pretty"
{
"nodes" : {
"r6zSsQGNRXiGwRljYhUKWw" : {
"jvm" : {
"pid" : 809507,
"version" : "22.0.1",
"vm_name" : "OpenJDK 64-Bit Server VM",
"vm_version" : "22.0.1+8-16",
安装指定版本
--下载
wget https://download.java.net/java/GA/jdk22/830ec9fcccef480bb3e73fb7ecafe059/36/GPL/openjdk-22_linux-x64_bin.tar.gz
[root@test19-server08 jdk-22]# cd /opt
[root@test19-server08 jdk-22]# tar xvf openjdk-22_linux-x64_bin.tar.gz
[root@test19-server08 jdk-22]# cd /opt/jdk-22/bin/
[root@test19-server08 bin]# ls
jar java javadoc jcmd jdb jdeps jhsdb jinfo jmap jpackage jrunscript jstack jstatd keytool serialver
jarsigner javac javap jconsole jdeprscan jfr jimage jlink jmod jps jshell jstat jwebserver rmiregistry
--验证版本
openjdk version "22" 2024-03-19
OpenJDK Runtime Environment (build 22+36-2370)
OpenJDK 64-Bit Server VM (build 22+36-2370, mixed mode, sharing)
[root@test19-server08 bin]# pwd
/opt/jdk-22/bin
配置jdk环境变量
[root@test19-server08 bin]# vim /usr/share/elasticsearch/bin/elasticsearch-env
#!/bin/bash
#添加安装路径,最顶部
export ES_JAVA_HOME=/opt/jdk-22
重启elasticsearch
systemctl restart elasticsearch.service
查看当前elasticsearch的jdk版本
[root@test19-server08 bin]# curl -X GET "localhost:9200/_nodes?filter_path=**.jvm*&pretty"
{
"nodes" : {
"r6zSsQGNRXiGwRljYhUKWw" : {
"jvm" : {
"pid" : 810638,
"version" : "22",
"vm_name" : "OpenJDK 64-Bit Server VM",
"vm_version" : "22+36-2370",
总结
更换 Elasticsearch 集群中的 JDK 版本是一项旨在提高系统性能、稳定性和可靠性的举措。通过合理选择合适的 JDK 版本,并采取适当的预防措施,可以有效地解决 CPU 使用率飙升导致的问题,从而提升整体用户体验和服务质量。务必注意兼容性、进行全面测试,并逐步实施变更,以确保平稳过渡并达到预期效果。