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

Yarn启动Node服务无日志退出:exit code 1问题排查求助

排查Node服务随机退出的额外方法

以下是针对你遇到的问题的进一步排查思路:

  • 捕获进程退出信号
    Node服务意外退出可能是收到外部终止信号(如SIGTERM、SIGINT)而非未处理异常,这类信号不会触发uncaughtException或unhandledRejection。添加信号处理器并记录日志:

    process.on('SIGTERM', () => {
      console.error('Received SIGTERM signal, service shutting down');
      process.exit(1);
    });
    
    process.on('SIGINT', () => {
      console.error('Received SIGINT signal, service shutting down');
      process.exit(1);
    });
    

    同时启动服务时将所有输出重定向到日志文件,避免遗漏stderr输出:

    yarn start 2>&1 > service-full.log
    
  • 排查内存泄漏或OOM问题
    内存耗尽导致系统OOM Killer终止进程时,Node不会触发异常处理器,只会直接退出。

    • 定时输出内存使用情况:
      setInterval(() => {
        const { rss, heapTotal, heapUsed } = process.memoryUsage();
        console.log(`Memory Usage - RSS: ${(rss/1024/1024).toFixed(2)}MB, HeapTotal: ${(heapTotal/1024/1024).toFixed(2)}MB, HeapUsed: ${(heapUsed/1024/1024).toFixed(2)}MB`);
      }, 60000); // 每分钟记录一次
      
    • 查看系统OOM日志:执行dmesg | grep -i "out of memory",如果存在OOM Killer记录,会显示被终止的进程信息。
    • 使用Chrome DevTools的Memory面板分析内存:启动服务时添加--inspect参数,通过chrome://inspect连接调试。
  • 验证依赖与Node版本兼容性

    • 切换Node版本:用nvm尝试不同的LTS版本,排查是否是Node版本与依赖包的兼容性问题。
    • 检查依赖冲突:执行yarn why <package-name>查看特定包的依赖链,确认是否存在版本冲突;用yarn audit检查依赖是否有已知漏洞。
    • 尝试直接用Node启动:跳过yarn,直接执行node your-entry-file.js,排除yarn本身的问题。
  • 检查系统资源限制

    • 文件描述符限制:执行ulimit -n查看当前进程允许打开的文件数,若数值过低(如默认的1024),临时调整为ulimit -n 65535,并检查服务是否还会崩溃。
    • 监控CPU/内存使用率:用top或htop实时监控服务进程的资源消耗,确认是否存在CPU占满或内存持续上涨的情况。
  • 排查Logger自身问题
    可能你的日志库在异常发生时无法正常写入日志,暂时替换为console.error测试:

    process.on('unhandledRejection', (err) => {
      console.error('[FATAL] Unhandled Rejection:', err.stack || err);
      process.exit(1);
    });
    
    process.on('uncaughtException', (err) => {
      console.error('[FATAL] Uncaught Exception:', err.stack || err);
      process.exit(1);
    });
    

    若崩溃时控制台有输出,说明原日志库存在问题。

  • 启用Node调试日志
    启动服务时添加NODE_DEBUG=*或--trace-warnings参数,让Node输出更多调试信息:

    NODE_DEBUG=* yarn start
    # 或
    node --trace-warnings your-entry-file.js
    

    这些日志可能包含未被捕获的警告或内部错误线索。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 17:57:14