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

AWS ECS部署Jenkins报JVM is terminating. Shutting down Jetty无异常如何解决

核心问题排查方向

  • 首先排查负载均衡健康检查配置错误:你当前目标组健康检查匹配码设置为仅200,但未认证状态下访问Jenkins根路径/会返回302重定向到登录页,健康检查会判定为失败,连续失败达到阈值后ECS服务会自动终止不健康任务,就会出现你看到的JVM正常收到终止信号关闭Jetty的日志,没有任何错误输出。
  • 其次排查容器级内存限制过低:你的任务定义中任务级内存配置为2048,但容器级内存仅配置了512,Jenkins启动后加上插件运行很容易超过512M内存阈值,被内核OOM Killer终止,也会出现相同的关闭日志。
  • 最后排查JVM堆内存未适配容器配额:默认JVM不会识别容器的内存限制,会读取宿主机内存配置分配堆内存,很容易出现实际内存使用超过容器配额被终止的问题。

具体解决方案

  1. 修改目标组健康检查配置:
    把健康检查的匹配码改为200-399,或者把健康检查路径改为/login(该路径未认证访问也会返回200状态码),同时调高健康检查的超时时间和不健康阈值,适配Jenkins的启动速度:
    resource "aws_lb_target_group" "target_group" {
        name            = "target-group"
        port            = 8080
        protocol        = "HTTP"
        target_type     = "ip"
        vpc_id          = "vpc-000"
        
        health_check {
          matcher   = "200-399"
          path      = "/"
          timeout   = 10
          interval  = 30
          unhealthy_threshold = 3
        }
    
        depends_on = [
          aws_alb.jenkinsdev_load_balancer
        ]
    }
    
  2. 调整容器内存配置,删除容器级的内存/CPU限制,直接使用任务级的配额即可,避免额外限制:
    把任务定义的container_definitions里的"memory": 512, "cpu": 256两行删掉即可。
  3. 优化JVM启动参数,适配容器内存限制:
    修改JAVA_OPTS环境变量,增加堆内存限制和容器适配参数:
    {
        "name": "JAVA_OPTS",
        "value": "-Djava.util.logging.config.file=/var/jenkins_home/log.properties -Xmx1024m -Xms512m -XX:+UseCGroupMemoryLimitForHeap"
    }
    
  4. 可选配置:如果需要持久化Jenkins数据,建议挂载EFS文件系统到/var/jenkins_home路径,避免任务重启后配置和数据丢失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 11:57:01