首页 > 解决方案 > 以非root用户身份运行elasticsearch时出现JavaNative错误

问题描述

我在 liferay 门户(边车)中使用弹性搜索。不幸的是,elasticsearch 只能以 root 用户身份启动。否则,我会 org.elasticsearch.bootstrap.JNANatives.trySetMaxNumberOfThreads在引导时收到 java 本机错误:

V  [libjvm.so+0x687142]  InterpreterRuntime::resolve_invoke(JavaThread*, Bytecodes::Code)+0x1b2
j  org.elasticsearch.bootstrap.JNANatives.trySetMaxNumberOfThreads()V+20
j  org.elasticsearch.bootstrap.Natives.trySetMaxNumberOfThreads()V+17
j  org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Ljava/nio/file/Path;ZZZ)V+75

我已经检查/更新了当前用户的 ulimit,但似乎JNANatives不允许执行此方法。该服务以 root 身份启动,但我想避免服务器上的任何 root 进程。有人有类似的问题吗?我该如何调试呢?这里可能是什么问题?

非常感谢

标签: elasticsearchliferay-7elasticsearch-7

解决方案


现在,我发现了问题并想在这里分享,以便任何有类似问题的人找到可能的提示。我发现层次结构中的一些文件夹,涉及的安装导致一些权限问题。这会导致org.elasticsearch.bootstrap.JNANatives.trySetMaxNumberOfThreads(). 弹性搜索的Liferay 报告java.io.StreamCorruptedException: invalid type code: 23。我以为这是由于a ulimit,但事实并非如此。修复顶级文件夹的挂载/文件夹权限,解决了引导问题。


推荐阅读