You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 16.04.1 LTS机器运行Elasticsearch-8.2.0报错求助

解决Ubuntu 16.04 LTS上Elasticsearch 8.2.0启动时的类找不到错误

这个问题我在LXC容器环境(Ubuntu 16.04很常用这个容器方案)里碰见过,本质是JVM输出的cgroup警告被shell误解析成了主类参数,才导致出现Could not find or load main class的错误。下面是几个靠谱的解决办法:

办法一:过滤JVM警告,避免干扰启动命令

Elasticsearch启动脚本执行时,JVM输出的Duplicate cpuset controllers detected警告被shell当成了主类的一部分,我们可以在启动脚本里过滤掉这个警告:

  1. 打开Elasticsearch目录下的./bin/elasticsearch脚本
  2. 找到执行Java的核心行(通常是包含exec "$JAVA"的那一段),把它替换成:
    exec "$JAVA" "$@" 2>&1 >/dev/null | grep -v "Duplicate cpuset controllers detected" >&2
    
  3. 保存后重新运行./bin/elasticsearch即可

办法二:禁用JVM的容器环境检测

通过JVM参数直接关闭容器相关的检测,从根源上消除警告:

  1. 打开Elasticsearch的配置文件config/jvm.options
  2. 在文件末尾添加一行:
    -XX:-UseContainerSupport
    
  3. 保存后重启Elasticsearch。这个参数在Java 17(Elasticsearch 8.2.0要求的版本)完全支持,不会影响ES的正常运行。

办法三:调整LXC容器的cgroup配置(需容器管理权限)

如果你有权限修改LXC容器的配置,可以直接解决重复cpuset的问题:

  1. 找到容器的配置文件,通常路径是/var/lib/lxc/<你的容器名>/config
  2. 添加或修改以下配置:
    lxc.cgroup.cpuset.cpus = 0
    lxc.cgroup.cpuset.mems = 0
    
  3. 重启容器后再启动Elasticsearch,警告就会消失。

内容的提问来源于stack exchange,提问作者namespace-Pt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 20:52:38