ElasticSearch启动该正常无法连接或无法正常启动排查方案

一.8.2版本及以上默认https链接

  • 在没有修改默认配置的情况下会出现如下错误

    [2022-08-26T10:01:44,462][WARN ][o.e.x.s.t.n.SecurityNetty4HttpServerTransport] [DESKTOP-MFRG8OJ] received plaintext http traffic on an https channel, closing connection Netty4HttpChannel{localAddress=/[0:0:0:0:0:0:0:1]:9200, remoteAddress=/[0:0:0:0:0:0:0:1]:64023}
    
  • 解决方案

    • 修改${elasticsearch解压文件夹}/config/elasticsearch.yml文件中配置

      # Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents -》 为HTTP API客户端连接启用加密,如Kibana、Logstash和代理 :默认是true表示开启
      xpack.security.http.ssl:
        enabled: true
        keystore.path: certs/http.p12
      
    • 修改为: false使其关闭

      xpack.security.http.ssl:
        enabled: false
        keystore.path: certs/http.p12
      
    • 然后关闭elasticsearch重启即可通过http链接

二. JDK版本过低(现在市面上基本都是1.8及以上进行开发,所以出现问题的概率较低)

  • 7.8及以上版本是需要使用JDK版本1.8以上的环境的,

三. 空间不足导致闪退(一般闪退是win), 通过路径访问追踪错误

  • ${elasticsearch解压文件夹}/logs/elasticsearch.log查看内容日志如果涉及到和内存空间相关

  • 接下来创建一个自定义的options作为后缀的文件同时注意

    • tar.gz 或 .zip:将自定义 JVM 选项文件添加到config/jvm.options.d/.
    • Debian 或 RPM:将自定义 JVM 选项文件添加到/etc/elasticsearch/jvm.options.d/.
    • Docker:将挂载自定义 JVM 选项文件绑定到 /usr/share/elasticsearch/config/jvm.options.d/.

    Do not modify the root jvm.optionsfile. Use files injvm.options.d/instead. [官网内容划重点]{https://www.elastic.co/guide/en/elasticsearch/reference/8.4/advanced-configuration.html#set-jvm-heap-size}

  • 编写option文件内容, 假定文件名称为jvmXm.options

    ⚠JVM 选项文件必须具有后缀*.options*并包含以行分隔的 JVM 参数列表。JVM 按字典顺序处理选项文件。eg:a.options>b.options

    JVM 选项文件包含以行分隔的 JVM 参数列表。参数前面有一个破折号 ( -)。要将设置应用于特定版本,请在版本或一系列版本前面加上冒号。

    • 将设置应用于所有版本:

      - Xms2g 
      - Xmx2g
      
    • 将设置应用于特定版本:

      17 :- Xms2g
      17 :- Xmx2g
      
    • 将设置应用于一系列版本:

      17 - 18 :- Xms2g
      17 - 18 :- Xmx2g
      

      要将设置应用于特定版本和任何更高版本,请省略范围的上限。例如,此设置适用于 Java 8 及更高版本:

      17 -:- Xms2g
      17 -:- Xmx2g
      

    空白行被忽略。以开头的行#被视为注释并被忽略。未注释掉且未被识别为有效 JVM 参数的行将被拒绝,并且 Elasticsearch 将无法启动。

  • 注意Set the JVM heap size

    默认情况下,Elasticsearch 会根据节点的 角色和总内存自动设置 JVM 堆大小。对于大多数生产环境,建议使用默认大小。

    要覆盖默认堆大小,请设置最小和最大堆大小设置,Xms然后Xmx. 最小值和最大值必须相同。

    堆大小应基于可用 RAM:

    • 设置XmsXmx不超过总内存的 50%。Elasticsearch 需要内存用于 JVM 堆以外的用途。例如,Elasticsearch 使用堆外缓冲区来实现高效的网络通信,并依赖操作系统的文件系统缓存来高效地访问文件。JVM 本身也需要一些内存。Elasticsearch 使用的内存超出Xmx设置所配置的限制是正常的。

      Docker等容器中运行时,总内存定义为容器可见的内存量,而不是主机上的总系统内存。

    • 设置XmsXmx不超过压缩普通对象指针 (oops) 的阈值。确切的阈值会有所不同,但在大多数系统上 26GB 是安全的,在某些系统上可能高达 30GB。要验证您是否低于阈值,请检查 Elasticsearch 日志中的条目,如下所示:

      heap size [1.9gb], compressed ordinary object pointers [true]
      

      或者jvm.using_compressed_ordinary_object_pointers使用节点信息 API检查节点的值:

      GET _nodes/_all/jvm
      

    Elasticsearch 可用的堆越多,它可以用于内部缓存的内存就越多。这为操作系统留出更少的内存用于文件系统缓存。更大的堆也可能导致更长的垃圾收集暂停。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐