Linux スレッド数設定

LinuxとJavaプロセスで大量スレッドを使用したくいろいろとインターネットで調べて実施しました。

・スレッド数調査
ps -eLF | grep [目的のプロセスやPID] | wc -l
全体であれば、grepを無くす。

・スレッド数調整
kernel.threads-maxだけで良いと思っていたが、スレッドはLinuxにおいてプロセス扱いの為、PIDが必要となる為、下記設定が必要。
PIDの最大値はデフォルトで(私の環境では)「32768」。いくらkernel.threads-maxを上げても、PIDの制限でリソース不足となる。
実際にリソース不足になると「Resource temporarily unavailable」が発生する。Linuxのコマンドもリソース不足で実行出来なくなる。
sysctl -w kernel.threads-max=600000
sysctl -w kernel.pid_max=600000
sysctl -w vm.max_map_count=600000

永続的にするには、/etc/sysctl.confに記載する。
 /etc/sysctl.confに先に記載して、sysctl -pで反映でも設定可能。

設定値の確認は、
sysctl -n kernel.threads-max
sysctl -n kernel.pid_max
sysctl -n vm.max_map_count
です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です