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

Jetty 5.1.x搭载OSGi启动慢 需等10分钟或本地登录才能启动求助

问题根因

你遇到的启动阻塞现象本质是系统熵池不足导致的Java SecureRandom调用阻塞:

  • 你使用的老旧Equinox Jetty/OSGi组件启动时需要生成安全随机数,默认会读取/dev/random设备获取熵,当系统可用熵不足时,该读取操作会一直阻塞,直到系统攒够足够的熵才会继续执行,对应你观察到的启动前10分钟Bundle卡在STARTING/RESOLVED状态的现象。
  • 本地登录和SSH登录的核心区别:
    • 本地登录接入的是物理终端(tty),你的键盘、鼠标输入会直接被系统计入熵池,快速补充可用熵,所以本地登录后阻塞立刻被解除,服务完成启动
    • SSH登录接入的是网络伪终端(pts),远程输入操作默认不会被计入系统熵池,无法补充可用熵,因此阻塞会持续到熵值达标为止。
无需修改代码的解决方案

以下方案按优先级从高到低排序:

  • 方案1:修改Java启动参数替换随机源(最稳定,一劳永逸)
    在你现有Java启动命令的-DmS参数旁边新增启动参数:-Djava.security.egd=file:/dev/./urandom

    注:路径里的/./是为了兼容老版本JDK的识别bug,避免JDK忽略参数仍然读取/dev/random。修改后重启服务即可秒启动,无需调整其他配置。

  • 方案2:安装熵生成工具补充系统熵(不需要修改服务启动配置)
    安装rng-tools工具,调用硬件随机数生成能力持续填充系统熵池:
    1. 对应系统执行安装命令:
      • Debian/Ubuntu系:apt install rng-tools
      • CentOS/RHEL系:yum install rng-tools
    2. 启动服务并设置开机自启:
      • Systemd系统:systemctl enable --now rngd
        配置完成后系统熵池会始终维持充足状态,服务启动不会再阻塞。
  • 方案3:模拟本地输入临时触发(适合临时救急不做长期配置)
    如果不想做任何长期配置,可通过命令模拟系统事件补充熵:
    执行find / > /dev/null 2>&1 &,该命令会遍历文件系统产生大量系统事件,快速补充熵池,一般10秒内即可解除服务启动阻塞。

内容的提问来源于stack exchange,提问作者Artisans_VL

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 15:39:00