Performance 如何在ssh连接方面优化Ansible playbook的性能
我有下面的playbook test1.yml,它获取此目录下26个子文件夹的数据 任务:Performance 如何在ssh连接方面优化Ansible playbook的性能,performance,time,ssh,ansible,performance-testing,Performance,Time,Ssh,Ansible,Performance Testing,我有下面的playbook test1.yml,它获取此目录下26个子文件夹的数据 任务: - name: List directories raw: "ls -d "/var/myfile/pdf/*/" register: subdir - name: List pid files raw: "istat {{ item }}" with_items: "{{ subdir.stdout_lines }}"
- name: List directories
raw: "ls -d "/var/myfile/pdf/*/"
register: subdir
- name: List pid files
raw: "istat {{ item }}"
with_items: "{{ subdir.stdout_lines }}"
- name: List directories
raw: "ls -d "/var/myfile/pdf/*/"
register: subdir
- name: List pid files
include_tasks: "innertest.yml"
with_items: "{{ subdir.stdout_lines }}"
我运行剧本,需要29秒才能完成
time ANSIBLE_SSH_PIPELINING=True ansible-playbook -i=10.9.9.12, -f 30 test1.yml -vvv
playbook完成后,以下是所用时间的详细信息输出:
输出:
real 0m29.144s
user 0m6.206s
sys 0m5.618s
real 0m59.044s
user 0m18.203s
sys 0m10.118s
我现在将与istat
task相同的代码放在include_tasks`文件中,如下所示
剧本测试2.yml
任务:
- name: List directories
raw: "ls -d "/var/myfile/pdf/*/"
register: subdir
- name: List pid files
raw: "istat {{ item }}"
with_items: "{{ subdir.stdout_lines }}"
- name: List directories
raw: "ls -d "/var/myfile/pdf/*/"
register: subdir
- name: List pid files
include_tasks: "innertest.yml"
with_items: "{{ subdir.stdout_lines }}"
cat innertest.yml
- raw: "istat {{ item }}"
time ANSIBLE_SSH_PIPELINING=True ansible-playbook -i=10.9.9.12, -f 30 test2.yml -vvv
输出:
real 0m29.144s
user 0m6.206s
sys 0m5.618s
real 0m59.044s
user 0m18.203s
sys 0m10.118s
正如您所看到的,由于include\u tasks
在调试中,我还看到有26个ssh连接被触发,用于同一目标主机的26个子目录和\u项
10.9.9.12
我不确定这在内部是如何工作的,但出于性能原因,最好为同一主机上的26个子目录的istat
提供一个ssh连接
有没有办法提高include_任务的性能并减少到同一主机的ssh连接数