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


文章目录

  • ElasticSearch启动该正常无法连接或无法正常启动排查方案
  • 一.8.2版本及以上默认https链接
  • 二. JDK版本过低(现在市面上基本都是1.8及以上进行开发,所以出现问题的概率较低)
  • 三. 空间不足导致闪退(一般闪退是win), 通过路径访问追踪错误


一.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 可用的堆越多,它可以用于内部缓存的内存就越多。这为操作系统留出更少的内存用于文件系统缓存。更大的堆也可能导致更长的垃圾收集暂停。