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

AWS EC2 Windows实例断开会话后NodeJS进程终止问题求助

解决Windows Server 2012 R2断开远程后NodeJS进程停止的问题

这个问题我之前维护Windows服务器上的Node服务时也碰到过,核心原因是Windows远程桌面会话断开后,用户会话会被自动注销,导致运行在该会话下的Node进程跟着终止。下面给你几个亲测有效的解决方案,按推荐程度排序:

1. 将Node进程注册为Windows服务(最稳定推荐)

把Node程序做成系统服务是最可靠的方式,服务在系统账户下运行,完全不受用户会话的影响,开机自动启动,断开远程也不会停止。我常用nssm(Non-Sucking Service Manager)来做这个,比Windows自带的sc命令简单太多:

  • 下载nssm后解压到服务器上的固定路径,比如C:\nssm
  • 以管理员身份打开命令提示符,切换到nssm的对应位数目录:cd C:\nssm\win64(根据系统位数选32或64位)
  • 运行命令安装服务:nssm install NodeMyService(NodeMyService是你自定义的服务名称)
  • 在弹出的nssm配置窗口里,做以下设置:
    • Application标签:
      • Path:选择你的node.exe完整路径(比如C:\Program Files\nodejs\node.exe)
      • Arguments:填写你的Node项目入口文件的完整路径(比如C:\node-app\server.js)
      • Working Directory:填写项目的根目录(比如C:\node-app)
    • Service标签:
      • Startup type:选择Automatic(开机自动启动)
  • 点击Install Service完成安装,然后可以在服务管理器里找到这个服务,右键启动它。之后不管你是否连接远程,服务都会持续运行。

2. 使用tscon命令分离会话(临时场景适用)

如果只是临时需要保持进程运行,不想改服务,可以用tscon命令把当前会话转移到控制台,这样断开远程时不会注销会话:

  • 登录服务器后,打开命令提示符,运行query session,找到你当前会话的ID(比如输出里的rdp-tcp#0对应的ID是2)
  • 运行命令:tscon 2 /dest:console(把2换成你的会话ID)
  • 执行完后远程桌面会自动断开,但你的会话并没有被注销,Node进程会继续在后台运行。下次连接时,直接登录就能回到之前的会话状态。

3. 修改组策略禁用会话自动注销(不推荐长期用)

如果不想用服务或手动执行命令,可以调整Windows的会话超时设置,防止断开后自动注销:

  • 运行gpedit.msc打开组策略编辑器
  • 依次展开:计算机配置 -> 管理模板 -> Windows组件 -> 远程桌面服务 -> 远程桌面会话主机 -> 会话时间限制
  • 找到以下两个设置,都改成已禁用(或者设置一个极长的超时时间):
    • 设置空闲远程桌面服务会话的时间限制
    • 设置断开的会话的时间限制
  • 运行gpupdate /force更新组策略,之后重启服务器生效。

注意:这个方法会导致闲置会话一直占用系统资源,长期使用可能会有性能问题,所以只适合临时应急。

内容的提问来源于stack exchange,提问作者I'l Follio

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:51:12