Self-Hosted Windows GitHub Runner闲置1-2小时后无法拾取作业求助
问题描述
Windows自托管GitHub Runner在闲置1-2小时后无法正常拾取作业。首次启动后能正常处理任务,但长时间无作业后,GitHub工作流显示“Waiting for a Runner to pick up this Job”,Runner本地界面显示处于idle状态,日志也标注已准备好接收作业,重启Runner命令行后即可恢复正常。需要实现Runner持续稳定轮询作业,无需频繁重启。
解决方案
检查网络代理与连接稳定性
如果环境使用代理,确认代理没有设置闲置连接超时回收规则。可以在Runner的.runner配置文件中添加代理环境变量,或者在启动脚本中显式设置HTTP_PROXY/HTTPS_PROXY,避免闲置时连接被代理服务器主动断开。调整Runner轮询间隔
默认轮询间隔可能过长,导致闲置后连接失效。通过启动参数缩短轮询频率,让Runner更频繁地与GitHub服务器通信,保持连接活跃。例如设置30秒轮询一次:./run.cmd --poll-interval 30将Runner注册为Windows服务运行
命令行直接启动的Runner易受用户会话闲置、系统节电策略影响。将Runner注册为Windows服务,使其在后台独立运行,不受用户登录状态干扰:- 以管理员身份打开命令行,进入Runner安装目录
- 执行服务注册命令:
./svc.sh install - 启动服务:
./svc.sh start
后续可通过
./svc.sh stop或./svc.sh restart管理服务状态。更新GitHub Runner至最新版本
旧版本Runner可能存在闲置连接失效的已知bug。前往GitHub官方Runner下载页面获取对应Windows版本的最新安装包,替换现有Runner文件后重新配置,验证问题是否解决。排查系统节电与休眠设置
检查Windows电源配置,避免系统或网卡休眠导致Runner连接中断:- 打开「电源选项」,切换至高性能模式,关闭自动休眠、睡眠功能
- 进入网卡属性的「电源管理」页,取消勾选「允许计算机关闭此设备以节约电源」
排查防火墙与安全软件拦截
部分防火墙或杀毒软件会在设备闲置时中断长期网络连接。检查安全软件日志,确认未拦截Runner的出站请求,或把Runner的run.cmd及相关进程加入白名单。启用调试日志定位问题
启动Runner时开启调试模式,获取更详细的运行日志,便于定位闲置后的异常:./run.cmd --debug闲置一段时间后查看日志,重点关注连接状态、认证请求等环节是否出现异常。
内容的提问来源于stack exchange,提问作者David

