Wenn ich mir die Grenzen eines laufenden Prozesses anschaue, sehe ich
Max pending signals 15725
- Was ist das?
- Wie kann ich einen vernünftigen Wert für einen ausgelasteten Dienst ermitteln?
Im Allgemeinen kann ich anscheinend keine Seite finden, auf der die einzelnen Grenzwerte erläutert werden. Einige sind ziemlich selbsterklärend (max. Geöffnete Dateien), andere weniger (max. Msgqueue-Größe).
sigpending 31603
. Warum sind diese Grenzen so seltsame Zahlen (dh keine Potenz von 2)?Antworten:
Laut der Handbuchseite von
sigpending
:Es sind also die Signale (sigterm, sigkill, sigstop, ...) gemeint, die warten, bis der Prozess aus dem
D
(ununterbrochenen Schlaf-) Zustand herauskommt . Normalerweise befindet sich ein Prozess in diesem Zustand, wenn er auf E / A wartet. Dieser Schlaf kann nicht unterbrochen werden. Sogar sigkill (kill -9
) kann nicht und der Kernel wartet, bis der Prozess aufwacht (das Signal steht so lange für die Zustellung aus).Für die anderen unklaren Werte würde ich einen Blick in die Handbuchseite von werfen
limits.conf
.quelle
sigqueue
undsetrlimit
die Sie sich unbedingt ansehen sollten.Prozessgrenzen werden durch setrlimit (2) gesteuert.
So können Sie in seine Manpage schauen:
Im Allgemeinen erhalten Sie die detailliertesten Informationen, wenn Sie sich die Manpages von Syscalls ansehen. C ist die Muttersprache von UNIX / Linux.
quelle