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

Azure DevOps自托管代理闲置后断开:ConnectionReset错误求助

问题描述

在GCP虚拟机(CentOS Stream 9)上部署Azure DevOps自托管代理,已成功接入并能正常运行流水线,但代理闲置15-25分钟后会显示离线,需手动执行./run.sh &才能重新上线。Azure代理日志报错Socket Error: ConnectionReset。

  • 注册代理命令:
    <<PATH>>/config.sh --replace --work work --acceptTeeEula --url https://<domain>/<org>/ --auth pat --token <<PAT-TOKEN>> --agent <my-agent> --pool <my-agent-pool> && <<PATH>>/run.sh
    
  • 后续重启代理使用<<PATH>>/run.sh &
  • 尝试Docker容器部署代理,同样出现闲置后离线的问题
  • 系统信息:
    NAME="CentOS Stream"
    VERSION="9"
    ID="centos"
    ID_LIKE="rhel fedora"
    VERSION_ID="9"
    PLATFORM_ID="platform:el9"
    PRETTY_NAME="CentOS Stream 9"
    ANSI_COLOR="0;31"
    LOGO="fedora-logo-icon"
    CPE_NAME="cpe:/o:centos:centos:9"
    HOME_URL="https://centos.org/"
    BUG_REPORT_URL="https://issues.redhat.com/"
    REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux 9"
    REDHAT_SUPPORT_PRODUCT_VERSION="CentOS Stream"
    
排查与解决方案

1. 调整代理的心跳与连接超时配置

Azure DevOps自托管代理默认的心跳间隔可能不足以应对GCP网络的闲置超时。修改代理安装目录下.agent文件夹中的agent.config配置文件:

  • 将heartbeatInterval从默认30秒调整为10-15秒
  • 将connectionTimeout从默认10分钟调整为20分钟
  • 将retryInterval调整为5秒
    修改后重启代理,观察离线情况是否改善。

2. 配置GCP VM的网络闲置超时

GCP默认的网络防火墙或实例网络配置可能会断开长时间闲置的连接,需做以下调整:

  • 登录GCP控制台,找到目标VM实例,进入网络接口配置页面
  • 开启TCP keep-alive功能,设置间隔为120秒以内
  • 检查VM所在子网的防火墙规则,确保允许代理与Azure DevOps服务器的持续连接,避免闲置连接被阻断

3. 系统层面配置TCP Keep-Alive

在CentOS系统中调整TCP keep-alive参数,防止闲置连接被系统或网络设备断开:
编辑/etc/sysctl.conf,添加或修改以下参数:

net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_intvl = 60
net.ipv4.tcp_keepalive_probes = 5

执行sysctl -p使配置生效,该配置会让系统每10分钟发送一次keep-alive包,间隔60秒重试5次,避免连接被重置。

4. 将代理注册为systemd系统服务

手动运行代理容易因会话退出或系统重启导致中断,将代理配置为systemd服务,实现自动启动与重启:

  1. 创建服务文件/etc/systemd/system/azure-devops-agent.service:
    [Unit]
    Description=Azure DevOps Self-Hosted Agent
    After=network.target
    
    [Service]
    User=<your-user>
    WorkingDirectory=<agent-install-path>
    ExecStart=<agent-install-path>/run.sh
    Restart=always
    RestartSec=10
    
    [Install]
    WantedBy=multi-user.target
    
  2. 替换<your-user>和<agent-install-path>为实际用户与代理安装路径
  3. 执行以下命令启用并启动服务:
    systemctl daemon-reload
    systemctl enable azure-devops-agent.service
    systemctl start azure-devops-agent.service
    

5. 检查Azure DevOps端连接限制

确认Azure DevOps组织的代理池设置中没有配置代理闲置超时规则,同时检查是否存在IP地址变更导致连接被服务器端阻断的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 22:29:51