In our setup, we manage our servers using puppet. Since a few days I saw the puppet client running very slow. When stracing the puppet process I get loads of
rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
Can anyone tell me what is going wrong? What is this process waiting for?
Puppet is blocked somewhere in the execution...
Are you running strace on the daemon or are you running the puppet process by hand?
Can you tell what is supposed to be happening at that point? What is being executed from the manifest? What happens if you run puppet manually on the client?
This reminds me of this bug, so it's probably been fixed in an update. I tend not to run puppet as a daemon for this reason.
The answer on my own question was: I was doing stuff in git which caused puppet to wait for GIT. The problem wasn't really puppet but it was git taking too much time. I am investigating it further and I will post the solution when found.