关于#elasticsearch#的问题:Elasticsearch exited unexpectedly

elasticsearch启动报错:

[2023-05-22T17:18:31,828][INFO ][o.e.x.m.p.NativeController] [localhost.localdomain] Native controller process has stopped - no new native processes can be started

ERROR: Elasticsearch exited unexpectedly

除此之外没有任何错误提示,尝试过将内存占用从512m改到1g和2g后重启皆无效。
系统配置基本上用的默认的,除了目录和绑定ip没有进行其他修改。

系统:
CentOS-7

虚拟机内存:
10297MB

elasticsearch版本:
8.7.1

报错信息中看到 "Native controller process has stopped - no new native processes can be started",这通常是因为 Elasticsearch 的进程无法加载 NATIVE 动态链接库造成的。导致 NATIVE 动态链接库无法加载的原因可能是操作系统缺少相关库或者权限不够而无法使用。

首先,可以在命令行下尝试启动 Elasticsearch,以查看更详细的报错信息:

./bin/elasticsearch

如果还是看到与“Native controller”相关的错误,排查的一个重要方法是检查 Elasticsearch/JVM 是否依靠的是当前环境所缺失或者版本过低的共享库。

你可以通过执行下面的命令来确认 Elasticsearch 中需要的 native 库是否存在:

ldd ${ES_HOME}/modules/x-pack-ml/platform/linux-x86_64/lib/os-metrics-native.so

ES_HOME 是指 Elasticsearch 根目录的路径。上述命令会告诉你如果有的话,该动态链接库依赖于哪些本地库。

如 Elasticsearch 系统中确实缺少相关的库,你需要手动将相应版本的共享库复制到 Elasticsearch 所需的目录中。

最后,还可以通过更新 JDK 到最新版来避免此问题,也可以增加 JAVA 配置项来增加 Elasticsearch 启动时控制内存大小等配置参数。