Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在多台主机上调用ansible任务时出现延迟,尽管使用了'async'_Ansible - Fatal编程技术网

在多台主机上调用ansible任务时出现延迟,尽管使用了'async'

在多台主机上调用ansible任务时出现延迟,尽管使用了'async',ansible,Ansible,我试图从ansible playbook在多台主机上调用REST API,但不希望这是一个阻塞操作,所以使用async和poll 我假设任务的调用应该在没有任何巨大延迟的情况下完成。 但是从日志中我看到每次调用之间有大约2-3秒的延迟 2018-05-28 *11:26:51* ,530 p=7744 u=ops | TASK [Perform operation on Multiple Nodes] ************************************* 2018-05-

我试图从ansible playbook在多台主机上调用REST API,但不希望这是一个阻塞操作,所以使用async和poll

我假设任务的调用应该在没有任何巨大延迟的情况下完成。 但是从日志中我看到每次调用之间有大约2-3秒的延迟

2018-05-28 *11:26:51* ,530 p=7744 u=ops |  TASK [Perform operation on Multiple Nodes] *************************************
2018-05-28 *11:26:53* ,871 p=7744 u=ops |  ok: [localhost] => (item={u'a': u'host0', u'ipAddress':', u'port': u''})
2018-05-28 *11:26:56* ,095 p=7744 u=ops |  ok: [localhost] => (item={u'a': u'host1', u'ipAddress': u'', u'': u''})
2018-05-28 *11:26:58* ,324 p=7744 u=ops |  ok: [localhost] => (item={u'a': u'host2', u'ipAddress': u'', u'port': u''})
如何减少调用延迟?

首先,async用于允许Ansible在不等待当前任务完成的情况下继续执行其他任务。这并不意味着ansible将在所有主机上同时执行此任务,只会影响以下任务

为此,您可以在运行playbook时使用-forks选项。此选项设置允许ansible设置的并行连接或进程的数量。当-forks=3时,您告诉ansible并行执行3个主机进程

无论如何,forks的默认值是5,所以除非您更改它,否则这应该不是问题

如果需要更高的速度,请检查ssh管道和多路复用是否已启用。确保ansible配置文件中的以下行:

[ssh_connection]
ssh_args = -o ControlMaster=auto -o ControlPersist=60s
pipelining = true
有关此选项的文档,请单击此处:

[ssh_connection]
ssh_args = -o ControlMaster=auto -o ControlPersist=60s
pipelining = true