除内存与CPU泄漏外,Node.js(Express)服务器宕机原因排查
问题:Node.js Express BFF服务器周期性宕机且响应时长递增(非资源耗尽)
问题描述
我为React.js站点搭建了基于Node.js(Express.js)的BFF服务器,负责SSR渲染、请求代理及Redis页面缓存。近期出现每约2天服务器宕机的异常:重启后服务响应时长会随运行时间逐渐变长,但监控数据显示内存仅占用30%、CPU占用20%,无资源耗尽迹象。由于是大型生产站点,无法构建最小复现示例。
排查过程
【更新1】宕机触发原因
- 服务器宕机并非自身崩溃,而是Kubernetes因连续3次根路径GET请求存活检查失败,主动杀死了容器
- 站点未使用自建数据库,但每次浏览器GET请求会调用约6个第三方API接口
【更新2】深层问题定位
接入OpenTelemetry进行链路追踪后发现,超时请求中存在耗时极长的tcp.connect和tls.connect操作,由此推测是HTTP连接池不足,导致新请求需要频繁建立新连接,最终引发请求阻塞、存活检查超时。
解决方法
确认为连接不足问题后,通过以下方案解决:
- 为
node-fetch开启keepAlive配置,实现HTTP长连接复用,减少重复建立TCP/TLS连接的开销 - 优化第三方API请求的缓存策略,降低重复请求频次
总结建议
强烈建议遇到同类问题的开发者优先为项目接入遥测工具(如OpenTelemetry),通过链路追踪定位深层性能瓶颈,避免仅依赖基础资源监控(CPU、内存)误判问题根源。
内容的提问来源于stack exchange,提问作者Konstantin Pershin
相关产品推荐
相关产品推荐

