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

App Runner上仅健康检查访问的Spring Boot应用CPU、内存占用过高是否正常?

App Runner免费层级Spring Boot应用资源占满问题解答

这种情况绝对不正常。App Runner每10秒一次的健康检查属于轻量级HTTP请求,正常情况下不可能导致免费层级实例的CPU和内存被占满。

可能的原因

  • Spring Boot应用自身问题:
    • 健康检查端点(如/actuator/health)存在低效逻辑:比如每次请求都执行耗时的数据库查询、全量缓存刷新,或者加载大量数据,导致单次请求消耗过多资源。
    • 内存泄漏:未正确释放数据库连接、文件流等资源,或者静态集合无限制存储对象,长期运行后内存耗尽,触发频繁GC,进而导致CPU飙升。
    • 后台定时任务:应用内的定时任务在特定时间执行高负载操作(如数据同步、批量计算),刚好与健康检查时间窗口重叠,表现为健康检查触发资源占用,但实际是定时任务导致的问题。
  • App Runner免费层级资源限制:
    • 免费层级实例配额极低(通常为0.25 vCPU、512MB内存),如果应用启动后基础内存占用就接近阈值,加上健康检查的微小负载,可能直接触发资源耗尽。需检查JVM参数(如-Xmx)是否适配该配额。
    • 底层资源共享导致的性能波动:免费实例与其他用户共享物理资源,偶尔会出现性能抖动,但这种情况通常短暂且不会持续占满资源。

排查建议

  • 测试健康检查端点:直接调用应用的健康检查接口,查看响应时间和本地资源消耗,确认是否存在低效逻辑。
  • 启用Spring Boot监控:添加spring-boot-starter-actuator依赖,开启/actuator/metrics、/actuator/heapdump等端点,分析内存使用趋势、GC频率,定位内存泄漏点。
  • 查看App Runner监控数据:在控制台查看实例的CPU、内存占用曲线,确认资源飙升的时间点是否与特定操作(如定时任务执行)对应。
  • 调整JVM参数:针对免费实例的内存配额,设置合适的堆内存上限(如-Xmx256m),避免内存溢出引发的GC风暴。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 02:20:54