Ansible Tower通过WinRM执行Windows任务耗时过长原因问询
WinRM执行Ansible任务高耗时可能原因
网络层问题
- 中间安全设备检测延迟:链路中的防火墙、IDS/IPS、上网行为管理等设备对WinRM端口(5985/HTTP、5986/HTTPS)流量开启了深度包检测,每一次WinRM请求都要经过规则匹配、内容校验,额外增加1-10秒耗时。
- DNS双向解析异常:Ansible Tower侧解析目标Windows主机域名耗时超过1秒,或Windows主机开启了WinRM反向解析校验,无法解析Tower地址时会等待数秒超时后才继续处理请求。
- 链路质量不佳:Tower到目标主机的链路存在高延迟、丢包,TCP握手、WinRM数据传输出现多次重传,拉长单次请求的响应时间。
配置层问题
- 未开启WinRM连接复用:Ansible inventory中未配置
ansible_winrm_keep_alive: true,每执行一个任务都会重新建立WinRM会话、完成身份认证,多个独立任务会重复触发会话建立流程,总耗时成倍增长。 - 身份认证流程超时:WinRM传输配置为Kerberos认证但KDC服务器响应缓慢,或当前环境无法访问KDC,每次认证都会等待Kerberos超时后才回退到NTLM认证,单次认证即可产生10秒左右的等待。
- 主机安全软件拦截:目标Windows主机上的杀毒软件、EDR、主机防护系统会对WinRM启动的PowerShell进程、文件写入操作做实时扫描,每次win_file模块执行都要经过安全校验,产生固定耗时。
- WinRM服务配置不合理:目标主机WinRM服务开启了强制操作审计、会话配额限制过低,每一次WinRM请求都要走额外的审核流程,导致响应变慢。
- PowerShell启动延迟:目标主机的PowerShell配置了大量启动加载项、组策略启动脚本,每次Ansible调用WinRM启动PowerShell进程时都需要加载所有多余组件,单任务启动就需要数秒耗时。
- 目标存储性能不足:测试写入的D盘为SMB映射网络磁盘,或本地磁盘IO性能极低,文件写入操作本身就会产生高耗时。
本次测试使用的playbook配置如下:
- hosts: the_test_host tasks: - name: Create 1st file win_file: path: D:\test_1.txt state: touch - name: Create 2nd file win_file: path: D:\test_2.txt state: touch - name: Create 3rd file win_file: path: D:\test_3.txt state: touch - name: Create 4th file win_file: path: D:\test_4.txt state: touch - name: Create 5th file win_file: path: D:\test_5.txt state: touch
内容的提问来源于stack exchange,提问作者Hooch
相关产品推荐
相关产品推荐

