Elasticsearch8.14.3更换自带的openjdk版本

2024-09-26 18:52:45 浏览数 (4)

概述:为何更换 Elasticsearch 集群中的 JDK 版本

背景

在部署的 Elasticsearch 集群中,我们遇到了频繁的 CPU 使用率飙升问题,导致某些节点宕机。这种情况不仅影响了集群的稳定性和可靠性,还增加了维护成本和潜在的数据丢失风险。为了改善这种情况,我们决定更换 Elasticsearch 集群所使用的 JDK 版本,以优化性能并减少资源消耗。

为何更换 JDK 版本
  1. 性能优化:不同的 JDK 版本可能包含性能改进和优化,尤其是对于高负载场景。升级到最新版本的 JDK 可以利用最新的性能增强特性,从而提高 Elasticsearch 的响应速度和处理能力。
  2. 资源管理:CPU 使用率飙升通常是由于内存管理和垃圾回收(GC)机制的问题。新版本的 JDK 可能引入了更高效的内存管理和 GC 策略,有助于降低 CPU 负载并提高系统稳定性。
  3. Bug 修复:旧版本的 JDK 可能存在已知的 Bug 和安全问题,这些问题可能导致性能下降或不稳定行为。通过升级到新版本,我们可以规避这些问题,提高系统的可靠性和安全性。
  4. 兼容性:随着 Elasticsearch 的持续更新,新的版本可能更紧密地集成和优化了对特定 JDK 版本的支持。确保使用推荐的 JDK 版本可以帮助避免兼容性问题,并充分利用 Elasticsearch 的最新特性。

当前版本

代码语言:javascript复制
[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",

安装指定版本

代码语言:javascript复制
--下载
 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环境变量

代码语言:javascript复制
[root@test19-server08 bin]# vim /usr/share/elasticsearch/bin/elasticsearch-env
#!/bin/bash
#添加安装路径,最顶部
export ES_JAVA_HOME=/opt/jdk-22

重启elasticsearch

代码语言:javascript复制
systemctl restart elasticsearch.service

查看当前elasticsearch的jdk版本

代码语言:javascript复制
[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 使用率飙升导致的问题,从而提升整体用户体验和服务质量。务必注意兼容性、进行全面测试,并逐步实施变更,以确保平稳过渡并达到预期效果。

0 人点赞