Page 1 of 1

[Nagios-devel] Do not launch a shell for each check

Posted: Mon May 31, 2010 1:59 pm
by Guest
--001485f1e96853bbf80487e4ae22
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Hi list,

I'd like to propose a performance patch for Nagios that reduces the
number of Nagios' descendant processes.

The action of launching a single check involves multiple processes :

- child 1 (not executed if child_processes_fork_twice is disabled)
- launch child 2
- waits for child 2 termination

- child 2
- reset signal handling
- launch a shell (connected with a pipe via *popen*)
- read plugin output from the pipe
- write plugin output to a file

- shell
- executed as /sh -c command/
- variable expansion
- globbing
- every shell stuff you have on the command line
- launch the check itself

- check itself
- the obvious

In this event flow, we found that the shell execution wasn't required
in most cases. So, by avoiding /sh/ we could save fork/exec time and
reduce the number of concurrent processes at the same time. And indeed
shell's magic would still be available using /sh -c/ as the check
command with no performance penalty compared to the current situation.

What do you think about it ?

Best regards,

--=20
Matthieu KERMAGORET | D=C3=A9veloppeur

[email protected]

MERETHIS est =C3=A9diteur du logiciel Centreon.

--001485f1e96853bbf80487e4ae22
Content-Type: text/x-patch; charset=US-ASCII; name="nagios_no_popen.patch"
Content-Disposition: attachment; filename="nagios_no_popen.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_g9ve9za80

ZGlmZiAtTmF1ciBhL2Jhc2UvY2hlY2tzLmMgYi9iYXNlL2NoZWNrcy5jCi0tLSBhL2Jhc2UvY2hl
Y2tzLmMJMjAwOS0wOC0xMSAxODo1NjozOS4wMDAwMDAwMDAgKzAyMDAKKysrIGIvYmFzZS9jaGVj
a3MuYwkyMDEwLTA1LTMxIDEyOjIwOjE3LjMwMjc5NDkyNyArMDIwMApAQCAtMTIxLDYgKzEyMSw3
IEBACiBleHRlcm4gaW50ICAgICAgdXNlX2VtYmVkZGVkX3Blcmw7CiAjZW5kaWYKIAorI2RlZmlu
ZSBXSElURVNQQUNFUyAiIFxuXHJcdCIKIAogCiAKQEAgLTM0MCw2ICszNDEsOCBAQAogCWhvc3Qg
KnRlbXBfaG9zdD1OVUxMOwogCUZJTEUgKmZwPU5VTEw7CiAJaW50IHBjbG9zZV9yZXN1bHQ9MDsK
KwlpbnQgcGlwZWZkc1syXTsKKwljaGFyICoqYXJndjsKIAltb2RlX3QgbmV3X3VtYXNrPTA3NzsK
IAltb2RlX3Qgb2xkX3VtYXNrOwogCWNoYXIgKm91dHB1dF9maWxlPU5VTEw7CkBAIC03NzEsOSAr
Nzc0LDM0IEBACiAKICAgICAgCiAJCQkvKiBydW4gdGhlIHBsdWdpbiBjaGVjayBjb21tYW5kICov
Ci0JCQlmcD1wb3Blbihwcm9jZXNzZWRfY29tbWFuZCwiciIpOwotCQkJaWYoZnA9PU5VTEwpCisJ
CQlpZihwaXBlKHBpcGVmZHMpKQogCQkJCV9leGl0KFNUQVRFX1VOS05PV04pOworCQkJaWYoKHBp
ZD1mb3JrKCkpPDApeworCQkJCWNsb3NlKHBpcGVmZHNbMF0pOworCQkJCWNsb3NlKHBpcGVmZHNb
MV0pOworCQkJCV9leGl0KFNUQVRFX1VOS05PV04pOworCQkJCX0KKwkJCWVsc2UgaWYoIXBpZCl7
CisJCQkJY2xvc2UocGlwZWZkc1swXSk7CisJCQkJaWYoZHVwMihwaXBlZmRzWzFdLCBTVERPVVRf
RklMRU5PKTwwKXsKKwkJCQkJY2xvc2UocGlwZWZkc1sxXSk7CisJCQkJCV9leGl0KFNUQVRFX1VO
S05PV04pOworCQkJCQl9CisJCQkJY2xvc2UocGlwZWZkc1sxXSk7CisJCQkJYXJndj1wYXJzZV9j
b21tYW5kX2xpbmUocHJvY2Vzc2VkX2NvbW1hbmQpOworCQkJCWlmKCFhcmd2KQorCQkJCQlfZXhp
dChTVEFURV9VTktOT1dOKTsKKwkJCQlleGVjdnAoYXJndlswXSwgYXJndik7CisJCQkJX2V4aXQo
U1RBVEVfVU5LTk9XTik7CisJCQkJfQorCisJCQkvKiBwcmVwYXJlIHBpcGUgcmVhZGluZyAqLwor
CQkJY2xvc2UocGlwZWZkc1sxXSk7CisJCQlmcD1mZG9wZW4ocGlwZWZkc1swXSwiciIpOworCQkJ
aWYoIWZwKXsKKwkJCQljbG9zZShwaXBlZmRzWzBdKTsKKwkJCQlfZXhpdChTVEFURV9VTktOT1dO
KTsKKwkJCQl9CiAKIAkJCS8qIGluaXRpYWxpemUgYnVmZmVyICovCiAJCQlzdHJjcHkob3V0cHV0
X2J1ZmZlciwiIik7CkBAIC03ODYsNyArODE0LDEwIEBACiAJCQkJfQogCiAJCQkvKiBjbG9zZSB0
aGUgcHJvY2VzcyAqLwotCQkJcGNsb3NlX3Jlc3VsdD1wY2xvc2UoZnApOworCQkJZmNsb3NlKGZw
KTsKKwkJCWNsb3NlKHBpcGVmZHNbMF0pOworCQkJaWYod2FpdHBpZChwaWQsJnBjbG9zZV9yZXN1
bHQsMCkhPXBpZCkKKwkJCQlwY2xvc2VfcmVzdWx0PS0xOwogCiAJCQkvKiByZXNldCB0aGUgYWxh
cm0gKi8KIAkJCWFsYXJtKDApOwpAQCAtMjg2Miw2ICsyODkzLDggQEAKIAlpbnQgd2FpdF9yZXN1
bHQ9MDsKIAlGSUxFICpmcD1OVUxMOwogCWludCBwY2xvc2VfcmVzdWx0PTA7CisJaW50IHBpcGVm
ZHNbMl07CisJY2hhciAqKmFyZ3Y7CiAJbW9kZV90IG5ld191bWFzaz0wNzc7CiAJbW9kZV90IG9s
ZF91bWFzazsKIAljaGFyICpvdXRwdXRfZmlsZT1OVUxMOwpAQCAtMzA4NCw5ICszMTE3LDM0IEBA
CiAJCQltYXhfZGVidWdfZmlsZV9zaXplPTBMOwogCiAJCQkvKiBydW4gdGhlIHBsdWdpbiBjaGVj
ayBjb21tYW5kICovCi0JCQlmcD1wb3Blbihwcm9jZXNzZWRfY29tbWFuZCwiciIpOwotCQkJaWYo
ZnA9PU5VTEwpCisJCQlpZihwaXBlKHBpcGVmZHMpKQogCQkJCV9leGl0KFNUQVRFX1VOS05PV04p
OworCQkJaWYoKHBpZD1mb3JrKCkpPDApeworCQkJCWNsb3NlKHBp

...[email truncated]...


This post was automatically imported from historical nagios-devel mailing list archives
Original poster: [email protected]