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

Support forum for Nagios Core, Nagios Plugins, NCPA, NRPE, NSCA, NDOUtils and more. Engage with the community of users including those using the open source solutions.
Locked
Guest

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

Post 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]
Locked