システム全体で使えるスレッド数の最大値を上げる

システム全体での最大プロセス数(プロセス数+スレッド数)は、threads-max の値で決まる。(Linuxカーネルからは、スレッドもプロセスのように見える)
この値を超えるプロセスは生成できないので必要に応じて十分な値を取る必要があるかもしれない。ただし、threads-maxのデフォルトの数値はメモリ量に合わせて起動時に計算された値となっている。ちなみにうちの環境では以下の値だった。

$ cat /proc/sys/kernel/threads-max
15871

とりあえず、テストとして値を3倍にしてみる。変更方法は、/etc/sysctl.conf に以下のように追記する。

$ sudo vi /etc/sysctl.conf
...
# システム全体での最大プロセス数
kernel.threads-max = 47613            ← 追記


編集後は以下のコマンドで設定を反映させる。
$ sudo sysctl -p


再び、値を確認してみる。
$ cat /proc/sys/kernel/threads-max
47613

なお、ユーザ1人あたりが使用できるプロセス数の上限値は以下で確認できる。

$ ulimit -u
7935

/etc/security/limits.conf に以下のように追記すれば、各ユーザのプロセス数の上限値を変更できる。

$ sudo vi /etc/security/limits.conf
...
# プロセス数の上限値
chibi    soft    nproc   10000    ←追記
chibi    hard    nproc   15000    ←追記

# End of file

ここではchibiユーザのソフトリミットを10000に、ハードリミットを15000に設定した。一旦ログアウトしてから、値が変更されていることを確認してみる。

$ ulimit -u                       
10000