# Not forking parrallel tasks?

**URL:** <https://forum.ansible.com/t/not-forking-parrallel-tasks/13863>\
**Category:** Ansible Project\
**Tags:** ubuntu\
**Created:** [November 7, 2013, 6:04pm UTC](https://forum.ansible.com/t/not-forking-parrallel-tasks/13863 "2013-11-07T18:04:46Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![David\_Brossard](https://avatars.discourse-cdn.com/v4/letter/d/aeb1de/32.png) [@David\_Brossard](https://forum.ansible.com/u/David_Brossard)\
**Post date:** [November 7, 2013, 6:04pm UTC](https://forum.ansible.com/t/not-forking-parrallel-tasks/13863/1 "2013-11-07T18:04:46Z")

</div>

I have found when running ansible with either playbooks or direct commands that the forking is not working as I’d expect. If I add -f 20 or -f 3 or --forks #, it appears I still end up with only 1 remote command running at a time. I check this by looking at the processes running on the ansible server and I only see 1 remote ssh session at a time to my remote machines.  
I am running an older version of ansible 1.2.2 because it is the latest in the Ubuntu LTS repo. Has anyone else seen this? Is there a problem with my syntax?

Thanks

---

<div class="post-metadata">

**Author:** ![sivel](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/sivel/32/1198_2.png) [@sivel](https://forum.ansible.com/u/sivel)\
**Post date:** [November 7, 2013, 6:06pm UTC](https://forum.ansible.com/t/not-forking-parrallel-tasks/13863/2 "2013-11-07T18:06:21Z")

</div>

Forks are used for multiple servers, not multiple commands per server.

So if you are operating over 30 servers, you could set 30 forks and run a single command across all servers at once.

---

<div class="post-metadata">

**Author:** ![David\_Brossard](https://avatars.discourse-cdn.com/v4/letter/d/aeb1de/32.png) [@David\_Brossard](https://forum.ansible.com/u/David_Brossard)\
**Post date:** [November 7, 2013, 6:29pm UTC](https://forum.ansible.com/t/not-forking-parrallel-tasks/13863/3 "2013-11-07T18:29:32Z")

</div>

Correct. I am running a single command (such as apt-get update) against a dozen or so servers and want it to happen in parallel. Unfortunately, when using --forks 20 or -f 20 I still only get connections to 1 server at a time. They run consecutively and not concurrently.

---

<div class="post-metadata">

**Author:** ![Brian\_Coca1](https://avatars.discourse-cdn.com/v4/letter/b/278dde/32.png) [@Brian\_Coca1](https://forum.ansible.com/u/Brian_Coca1)\
**Post date:** [November 7, 2013, 7:27pm UTC](https://forum.ansible.com/t/not-forking-parrallel-tasks/13863/4 "2013-11-07T19:27:04Z")

</div>

sounds like you have ‘serial: 1’ set in the playbook.

---

<div class="post-metadata">

**Author:** ![David\_Brossard](https://avatars.discourse-cdn.com/v4/letter/d/aeb1de/32.png) [@David\_Brossard](https://forum.ansible.com/u/David_Brossard)\
**Post date:** [November 7, 2013, 10:05pm UTC](https://forum.ansible.com/t/not-forking-parrallel-tasks/13863/5 "2013-11-07T22:05:19Z")

</div>

This happens whether I use ansible-playbook or ansible. I do not have serial:1 (or any serial setting) in my playbooks or my ansible.cfg

---

<div class="post-metadata">

**Author:** ![David\_Brossard](https://avatars.discourse-cdn.com/v4/letter/d/aeb1de/32.png) [@David\_Brossard](https://forum.ansible.com/u/David_Brossard)\
**Post date:** [November 7, 2013, 10:16pm UTC](https://forum.ansible.com/t/not-forking-parrallel-tasks/13863/6 "2013-11-07T22:16:10Z")

</div>

For example, something as simple as:

ansible MyServers -m shell -a "uptime " -f 20

Only returns the uptime for server at a time. I have also tried using a sleep statement for example and only a single server returns its results at a time after the sleep interval. They are not running in parallel for some reason.

---

<div class="post-metadata">

**Author:** ![Brian\_Coca1](https://avatars.discourse-cdn.com/v4/letter/b/278dde/32.png) [@Brian\_Coca1](https://forum.ansible.com/u/Brian_Coca1)\
**Post date:** [November 7, 2013, 10:21pm UTC](https://forum.ansible.com/t/not-forking-parrallel-tasks/13863/7 "2013-11-07T22:21:04Z")

</div>

output to your screen is serialized (otherwise it would be intermixed) but  
the actual remote actions should be in parallel.

---

<div class="post-metadata">

**Author:** ![David\_Brossard](https://avatars.discourse-cdn.com/v4/letter/d/aeb1de/32.png) [@David\_Brossard](https://forum.ansible.com/u/David_Brossard)\
**Post date:** [November 7, 2013, 10:30pm UTC](https://forum.ansible.com/t/not-forking-parrallel-tasks/13863/8 "2013-11-07T22:30:29Z")

</div>

The don’t appear to be however, that is my concern. For example I assume a command like:

ansible MyServers -m shell -a “sleep 20” -f 20

When run on a list of less than 20 servers should return output from all servers around 20 seconds after it is initiated. It is not. 1 server replies, 20 seconds later the next server replies, 20 seconds later the next server replies etc.

They are not running in parallel. What am I missing?

---

<div class="post-metadata">

**Author:** ![Brian\_Coca1](https://avatars.discourse-cdn.com/v4/letter/b/278dde/32.png) [@Brian\_Coca1](https://forum.ansible.com/u/Brian_Coca1)\
**Post date:** [November 7, 2013, 10:36pm UTC](https://forum.ansible.com/t/not-forking-parrallel-tasks/13863/9 "2013-11-07T22:36:04Z")

</div>

just tested :

ansible all -m shell -a “sleep 10 && uptime” -f 10

and i get batches of 10 every 10 seconds (as expected)  
tested with git checkout and version 1.3.3

---

<div class="post-metadata">

**Author:** ![David\_Brossard](https://avatars.discourse-cdn.com/v4/letter/d/aeb1de/32.png) [@David\_Brossard](https://forum.ansible.com/u/David_Brossard)\
**Post date:** [November 7, 2013, 10:46pm UTC](https://forum.ansible.com/t/not-forking-parrallel-tasks/13863/10 "2013-11-07T22:46:46Z")

</div>

That is the expected behavior I was also hoping to see. But I do not however. How can I trouble shoot this?

---

<div class="post-metadata">

**Author:** ![tannerjc](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/tannerjc/32/985_2.png) [@tannerjc](https://forum.ansible.com/u/tannerjc)\
**Post date:** [November 7, 2013, 10:47pm UTC](https://forum.ansible.com/t/not-forking-parrallel-tasks/13863/11 "2013-11-07T22:47:35Z")

</div>

What connection method are you using? What verification steps are you taking to count the number of simultaneous connections?

---

<div class="post-metadata">

**Author:** ![Brian\_Coca1](https://avatars.discourse-cdn.com/v4/letter/b/278dde/32.png) [@Brian\_Coca1](https://forum.ansible.com/u/Brian_Coca1)\
**Post date:** [November 7, 2013, 10:48pm UTC](https://forum.ansible.com/t/not-forking-parrallel-tasks/13863/12 "2013-11-07T22:48:42Z")

</div>

start with -vvvv, also I’ll check 1.2.2 … there might be a locking issue that has been fixed in newer versions.

---

<div class="post-metadata">

**Author:** ![David\_Brossard](https://avatars.discourse-cdn.com/v4/letter/d/aeb1de/32.png) [@David\_Brossard](https://forum.ansible.com/u/David_Brossard)\
**Post date:** [November 7, 2013, 11:06pm UTC](https://forum.ansible.com/t/not-forking-parrallel-tasks/13863/13 "2013-11-07T23:06:03Z")

</div>

I have not manually change any connection method so I assume it should still be the default paramiko with shared SSH keys. Here is a test showing that it does not run in parallel. Notice that each response is 10 seconds after the previous one even though -f 10 is specified.

ansible Dev -m shell -a “sleep 10 && date” -f 10  
pdx-cass-d02 | success | rc=0 \>\>  
Thu Nov 7 22:54:39 UTC 2013

pdx-extws-d02 | success | rc=0 \>\>  
Thu Nov 7 22:54:49 UTC 2013

pdx-intws-d01 | success | rc=0 \>\>  
Thu Nov 7 22:55:00 UTC 2013

pdx-extws-d01 | success | rc=0 \>\>  
Thu Nov 7 22:55:10 UTC 2013

pdx-fep-d01 | success | rc=0 \>\>  
Thu Nov 7 22:55:20 UTC 2013

pdx-cass-d01 | success | rc=0 \>\>  
Thu Nov 7 22:55:30 UTC 2013

pdx-lb-d01 | success | rc=0 \>\>  
Thu Nov 7 22:55:40 UTC 2013

pdx-mq-d01 | success | rc=0 \>\>  
Thu Nov 7 22:55:51 UTC 2013

pdx-sql-d01 | success | rc=0 \>\>  
Thu Nov 7 22:57:35 UTC 2013

pdx-job-d01 | success | rc=0 \>\>  
Thu Nov 7 22:56:11 UTC 2013

pdx-listen-d01 | success | rc=0 \>\>  
Thu Nov 7 22:56:21 UTC 2013

pdx-sql-d02 | success | rc=0 \>\>  
Thu Nov 7 22:58:05 UTC 2013

---

<div class="post-metadata">

**Author:** ![David\_Brossard](https://avatars.discourse-cdn.com/v4/letter/d/aeb1de/32.png) [@David\_Brossard](https://forum.ansible.com/u/David_Brossard)\
**Post date:** [November 7, 2013, 11:16pm UTC](https://forum.ansible.com/t/not-forking-parrallel-tasks/13863/14 "2013-11-07T23:16:35Z")

</div>

So using -vvvv it appears that ansible first connects to ALL servers to copy the tmp file for execution and the password files etc. It then connects individually to the first server to execute that command. Once a response is returned it then connects to the next server.  
The verbose output is quite extensive. I’m not sure what else I should be looking for…

---

<div class="post-metadata">

**Author:** ![tannerjc](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/tannerjc/32/985_2.png) [@tannerjc](https://forum.ansible.com/u/tannerjc)\
**Post date:** [November 8, 2013, 12:10am UTC](https://forum.ansible.com/t/not-forking-parrallel-tasks/13863/15 "2013-11-08T00:10:35Z")

</div>

Are you able to reduce this down to a simple playbook or a module call and reproduce the behavior?

---

<div class="post-metadata">

**Author:** ![David\_Brossard](https://avatars.discourse-cdn.com/v4/letter/d/aeb1de/32.png) [@David\_Brossard](https://forum.ansible.com/u/David_Brossard)\
**Post date:** [November 8, 2013, 12:28am UTC](https://forum.ansible.com/t/not-forking-parrallel-tasks/13863/16 "2013-11-08T00:28:52Z")

</div>

That is what I was hoping to demonstrate with my simple module call of:

ansible Dev -m shell -a “sleep 10 && date” -f 10

Each result comes back 10 seconds after the previous result.

pdx-cass-d02 | success | rc=0 \>\>  
Thu Nov 7 22:54:39 UTC 2013

pdx-extws-d02 | success | rc=0 \>\>  
Thu Nov 7 22:54:49 UTC 2013

pdx-intws-d01 | success | rc=0 \>\>  
Thu Nov 7 22:55:00 UTC 2013

pdx-extws-d01 | success | rc=0 \>\>  
Thu Nov 7 22:55:10 UTC 2013

---

<div class="post-metadata">

**Author:** ![Brian\_Coca1](https://avatars.discourse-cdn.com/v4/letter/b/278dde/32.png) [@Brian\_Coca1](https://forum.ansible.com/u/Brian_Coca1)\
**Post date:** [November 8, 2013, 5:02pm UTC](https://forum.ansible.com/t/not-forking-parrallel-tasks/13863/17 "2013-11-08T17:02:21Z")

</div>

so I tested with 1.2.2 and 1.2.3 and cannot reproduce the issue:

ansible all -m shell -a “sleep 10 && uptime” -f 10

it returns 10 hosts every 10s, as expected

---

<div class="post-metadata">

**Author:** ![David\_Brossard](https://avatars.discourse-cdn.com/v4/letter/d/aeb1de/32.png) [@David\_Brossard](https://forum.ansible.com/u/David_Brossard)\
**Post date:** [November 8, 2013, 10:16pm UTC](https://forum.ansible.com/t/not-forking-parrallel-tasks/13863/18 "2013-11-08T22:16:56Z")

</div>

I will upgrade to ansible 1.3.3 today and see if that doesn’t solve my issues.  
Thanks

---

<div class="post-metadata">

**Author:** ![David\_Brossard](https://avatars.discourse-cdn.com/v4/letter/d/aeb1de/32.png) [@David\_Brossard](https://forum.ansible.com/u/David_Brossard)\
**Post date:** [November 25, 2013, 5:19pm UTC](https://forum.ansible.com/t/not-forking-parrallel-tasks/13863/19 "2013-11-25T17:19:45Z")

</div>

FYI- Upgrading to 1.3.3 did the trick. I’m not sure why I had the issue earlier that was unreproducible by others.  
Thanks for your help everyone.

---

<div class="post-metadata">

**Author:** ![Silvio\_Tomatis](https://avatars.discourse-cdn.com/v4/letter/s/5e9695/32.png) [@Silvio\_Tomatis](https://forum.ansible.com/u/Silvio_Tomatis)\
**Post date:** [August 6, 2015, 4:47pm UTC](https://forum.ansible.com/t/not-forking-parrallel-tasks/13863/20 "2015-08-06T16:47:15Z")

</div>

Posting on an old thread, since I just had this same issue with ansible 1.9.2.  
In the end, I could solve it removing my persisted ssh connections like this  
rm ~/.ansible/cp/\*  
I have no idea why exactly this solved the problem but in case you encounter the same issue you can try it.

[Next page](https://forum.ansible.com/t/not-forking-parrallel-tasks/13863.md?page=2)
