一般ユーザのnproc値を変更しようと以下のソフトリミット設定を行ったが、スペックの低いEC2インスタンスだとある一定の値以上に増やせない。
$ cat /etc/security/limits.d/20-nproc.conf : * soft nproc 4096 root soft nproc unlimited $ ulimit -u 3791
またrootユーザもunlimitedに設定されているにもかかわらず、同様にulimit -uの値が一般ユーザと同じになってしまう。
$ sudo su # ulimit -u 3791
これはnprocのハードリミットが設定されておらずカーネルによって設定された値がハードリミットとなり、この値がulimit -uの上限(上記の例では3791)になるためである。
$ man limits.conf : <type> hard for enforcing hard resource limits. These limits are set by the superuser and enforced by the Kernel. The user cannot raise his requirement of system resources above such values. :
この制限を外すには、以下のように設定してハードリミットを増やしてあげればよい。
$ cat /etc/security/limits.d/20-nproc.conf : * hard nproc 4096
同様に、rootユーザのulimit -uをunlimitedにするには以下のように設定すればよい。
$ cat /etc/security/limits.d/20-nproc.conf : root hard nproc unlimited