実行中のプロセスの限界を見ると、
Max pending signals 15725
- これは何ですか?
- 忙しいサービスの実用的な値を決定するにはどうすればよいですか?
一般的に、それぞれの制限について説明しているページを見つけることができないようです。自明なものもあれば(オープンファイルの最大数)、そうでないものもあります(最大のmsgqueueサイズ)。
実行中のプロセスの限界を見ると、
Max pending signals 15725
一般的に、それぞれの制限について説明しているページを見つけることができないようです。自明なものもあれば(オープンファイルの最大数)、そうでないものもあります(最大のmsgqueueサイズ)。
回答:
のマニュアルページによるとsigpending
:
sigpending()は、呼び出しスレッドへの配信が保留されているシグナルのセットを返します(つまり、ブロック中に発生したシグナル)。
つまり、プロセスがD
(割り込み不可能なスリープ)状態から出るまで待機しているシグナル(sigterm、sigkill、sigstopなど)を意味します。通常、プロセスはI / Oを待機しているときにその状態になります。その睡眠は中断できません。sigkill(kill -9
)でさえもできず、カーネルはプロセスが起動するまで待機します(シグナルの配信は非常に長い間保留されています)。
他の不明瞭な値については、私は中を見かかるマニュアルページのをlimits.conf
。
sigqueue
ありsetrlimit
、あなたが本当に見ているべきものです。
プロセス制限はsetrlimit(2)によって制御されます
したがって、そのマンページを調べることができます。
RLIMIT_SIGPENDING(Linux 2.6.8以降)
呼び出しプロセスの実際のユーザーIDのキューに入れることができるシグナル数の制限を指定します。この制限を確認する目的で、標準信号とリアルタイム信号の両方がカウントされます。ただし、この制限はsigqueue(3)にのみ適用されます。kill(2)を使用して、プロセスにまだキューイングされていないシグナルの1つのインスタンスをキューイングすることは常に可能です。
一般に、syscallsのマンページを調べると、最も詳細な情報を入手できます。CはUNIX / Linuxの母国語です。
sigpending 31603
。これらの制限がなぜ奇妙な数であるのですか(2の累乗ではないのですか)