如何诊断生产环境Node.js应用的CPU与内存占用异常
摘要
- 基于Node.js v16(Docker镜像
node:16)的API部署于配备8GB内存、2个vCPU的EC2实例 - CPU占用率达200%(
docker stats显示) - 内存占用为1.1GB(
docker stats显示) - 堆快照仅显示132MB已使用
- Performance面板未发现长时间运行的CPU任务
- 高资源占用期间应用响应正常
问题描述
今日,监控系统告警显示,部署在AWS EC2实例Docker中的生产环境Node.js应用出现异常100% CPU占用。
使用htop检查实例后,发现两个node进程占用大量CPU。docker stats进一步显示该Node.js API服务占用了200%的CPU资源(因实例有2个vCPU)。
在此期间,HTTP请求时长监控显示正常,平均响应时间为30ms。
性能分析
为主动排查潜在问题,我现在使用--inspect=127.0.0.1:9229参数启动生产环境Node.js进程。
通过Chrome调试工具的Memory和Performance面板,我在异常期间收集了采样数据。
内存(Memory面板)
Docker报告应用占用1.2GB内存,但内存堆快照显示堆内存仅使用132MB。
(内存汇总图表)
CPU(Performance面板)
CPU图表未发现耗时较长的进程,最密集的任务仅耗时177ms,且仅出现几次。
当前状态
为便于诊断,我未重启应用。当前CPU占用率低于10%,但docker stats显示内存仍占用1.1GB。
由于高CPU占用的根因未知,难以复现该错误进行进一步排查。有趣的是,应用在CPU占用达200%时仍保持良好延迟。
总结
我的分析尚无结论,可能存在操作不当导致结果误导,现寻求帮助诊断此次CPU峰值及当前内存占用过高问题。
我已保存性能分析数据,以备后续分析使用。
内容的提问来源于stack exchange,提问作者Pedro Rambo
相关产品推荐
相关产品推荐

