実行中のプロセスの限界を見ると
Max pending signals 15725
- これは何ですか?
- 忙しいサービスの合理的な価値を決定する方法は?
通常、各制限が何であるかを説明するページが見つからないようです。一部は非常に自明であり(開いているファイルの最大数)、一部はあまり明確ではありません(最大メッセージキューサイズ)。
答え1
~によるとマニュアルページのsigpending
:
sigpending() は、呼び出しスレッドに渡されるのを待つ信号のセット (つまり、ブロック中に発生した信号) を返します。
D
したがって、これはプロセスの終了(無中断)の状態で信号(sigterm、sigkill、sigstop...)を待つことを意味します。通常、プロセスはI / Oを待っている間この状態にあります。睡眠は妨げられません。 sigkill( kill -9
) もできませんが、カーネルはプロセスが起きるまで待ちます (信号はそれだけ長く渡されるのを待ちます)。
他の不明な値については、以下を見てみましょう。マニュアルページのlimits.conf
。
答え2
プロセス制限は setrlimit(2) によって制御されます。
したがって、マンページを確認することができます。
RLIMIT_SIGPENDING(Linux 2.6.8以降)
呼び出しプロセスの実際のユーザーIDを待機できる信号数の制限を指定します。この制限を確認するために、標準信号とリアルタイム信号の両方が計算されます。ただし、この制限はsigqueue(3)にのみ適用されます。プロセスにまだキューに追加されていないシグナルのインスタンスをキューに追加するには、いつでも kill(2) を使用できます。
通常、システムコールのマニュアルページを見ると、最も詳細な情報が得られます。 CはUNIX / Linuxの母国語です。