きょうはあしたのために

今日気づいたことをかくんだ

limits.confで設定しているnprocが反映されないときのお話

概要

vagrant上のCentOS6.7にて、
/etc/security/limits.confまたは/etc/security/limits.d/90-nproc.confにプロセス上限数を設定後、
ulimit -uで値を確認してみても設定した値を下回った値が設定されていた。

具体的にいうと、

/etc/security/limits.d/90-nproc.conf

* soft nproc 8192

設定値確認

$ ulimit -Su
1868

設定きいてねええええと発狂していたらあることに気付く。。

気付いたこと

sysctlにもスレッド数(プロセス数)の最大値が指定してあったような・・?

sysctl確認

$ sysctl -a | grep kernel.threads-max
kernel.threads-max = 3737

おうふ。。

limits系のnproc設定値は、kernel.thread-maxで設定した値/2を超えられないようだ。

なんで割る2となるのかはよくわからないが(だれかおしえてーー)

なおkernel.threads-maxの値はデフォルトでマシンが積んでるメモリに合わせてちょうどいい感じの値が設定されているようなので、
このへんあまり理解していない人(主に自分のこと)は適当にいじらないほうがよさそう。

おとなしくvm自体に割り振ってるメモリを多めにして解決したほうがよさげなきがした。