如何防止Azure DevOps机器代理停止服务及解决离线问题
Azure Pipelines 部署组代理运行数小时自动停止、重启后仍离线排查方案


第一步:定位根因(先查日志,不要盲目改配置)
所有代理运行、连接相关的报错都会存在本地日志中,路径为代理安装目录下的_diag文件夹,默认安装路径是C:\azagent\A1\_diag,自定义安装路径找对应目录即可。
打开最新生成的.log文件,重点检索以下关键词匹配报错:SSL error、token expired、connection reset、out of memory、service crashed。
运行数小时自动停止的高频原因:
- 注册时使用的PAT令牌有效期过短:如果注册时生成的PAT只设置了几小时有效期,过期后代理会直接断连,服务自动退出
- 本地策略/安全软件拦截:部分企业内网Windows Server配置了空闲服务自动回收策略,EDR、杀软会拦截代理和Azure DevOps的长连接,直接终止代理进程
- 代理版本过旧:Azure DevOps平台侧更新后,旧版本代理的长连接保活逻辑失效,断连后无法自动重连,最终进程退出
- 网络层拦截:服务器到Azure DevOps的443长连接被防火墙、上网行为管理设备掐断,代理连续重连失败后退出
第二步:解决重启服务后仍离线的问题
手动重启服务后平台仍显示离线,按以下顺序排查,覆盖90%以上场景:
- 校验服务运行账号:打开服务管理器,找到对应Azure Pipelines代理服务,切换到「登录」标签页,不要使用默认本地系统账号运行,给服务配置拥有本地管理员权限的本地账号/域账号,保存配置后重启服务
- 删除残留锁文件:服务异常崩溃退出时,会在代理根目录残留
.agent_lock锁文件,新启动的进程拿到锁后会进入假运行状态,不会和平台建立连接。先停止代理服务,删除根目录下的.agent_lock文件,再启动服务 - 校验代理配置有效性:在代理根目录打开管理员权限PowerShell,执行
.\config.cmd查看是否能正常读取当前注册配置,如果提示配置损坏,直接执行.\config.cmd remove卸载现有配置,重新生成有效期最长(1年)的PAT令牌完成注册,注册时勾选「配置服务为开机自启、异常自动重启」选项 - 配置服务故障恢复策略:打开代理服务的「恢复」标签页,将第一次失败、第二次失败、后续失败的响应动作都设为「重新启动服务」,重启间隔设为1分钟,避免服务崩溃后长时间无人拉起
第三步:长效防断连配置
- 配置出站白名单:将所属Azure DevOps组织域名、对应代理服务域名加到服务器防火墙、内网网关的白名单,允许443端口长连接,连接超时阈值设为8小时以上
- 安全软件加白:如果服务器安装了EDR、杀软类软件,把整个代理安装目录加入进程、文件扫描白名单,避免进程被误杀
- 开启代理自动更新:在部署组设置中打开代理自动更新开关,平台版本迭代后代理会自动同步更新,避免版本兼容问题导致断连
内容的提问来源于stack exchange,提问作者Mohamdi Veten
相关产品推荐
相关产品推荐

