Beachtet chpst die ulimit-Einstellungen?

Beachtet chpst die ulimit-Einstellungen?

Wir haben derzeit Probleme mit einem JBoss-basierten Server auf einer Linux-Plattform. Im Prozess gehen uns praktisch die verfügbaren Datei-Handles aus und der Server stürzt ab.

Wir haben ulimit so eingestellt, dass 10.000 offene Dateihandles zulässig sind, und der Server stürzt ständig ab, wenn weit weniger Dateihandles geöffnet sind.

Mir ist aufgefallen, dass unsere Startskripte chpst verwenden, und mir ist aufgefallen, dass chpst es Ihnen ermöglicht, Datei-/Prozess-/Speichergrenzen als Argumente festzulegen. Weiß jemand, ob chpst das vorhandene System-Ulimit berücksichtigt, wenn keine expliziten Befehle festgelegt sind, oder ob es seine eigenen internen Standardwerte verwendet? Wenn ja, wo finde ich diese?

Danke

Antwort1

chpst berücksichtigt nicht einmal, was Sie als Argumente übergeben. Der Quellcode ist wirklich schwer zu lesen, aber strace bestätigt:

execve("/usr/sbin/chpst", ["chpst", "-o", "10000", "/bin/sh", "-c", "sleep 5"], [/* 26 vars */]) = 0
...
getrlimit(RLIMIT_NOFILE, {rlim_cur=1024, rlim_max=4*1024}) = 0
setrlimit(RLIMIT_NOFILE, {rlim_cur=4*1024, rlim_max=4*1024}) = 0
execve("/bin/sh", ["/bin/sh", "-c", "sleep 5"], [/* 26 vars */]) = 0
...

Ich würde es vermeiden.

Antwort2

Ich kann keinen Kommentar zu Olivier Tharan hinzufügen, und auch wenn dies eine alte Frage ist, denke ich, dass es nicht schlecht ist, falsche Behauptungen zu korrigieren (insbesondere, wenn die Behauptung relativ neu ist).

In seinem strace sagt getrlimit, dass das maximale Hard-Limit 4096 ist, und er fordert chpst auf, das Soft-Limit auf 10000 zu setzen. chpst tut dies, aber wie inVerwalten von limits.conf, weiche Grenzen können harte Grenzen nicht überschreiten, die vom Kernel und Root-Benutzer erzwungen werden. Das Einzige, was man dazu sagen könnte, ist, dass chpst vielleicht eine Warnung ausgeben sollte, das ist alles. Sicherlich nicht „Ich würde es vermeiden“.

Beachten Sie, dass das ursprüngliche Problem möglicherweise nicht mit chpst, sondern mit der Systemkonfiguration zusammenhängt. chpst ist lediglich ein Tool zum Festlegen beliebiger Grenzen für einen einzelnen Prozess und kein Tool zum Konfigurieren von Kerneln.

verwandte Informationen