一般ユーザの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

元記事はこちら

低スペックのEC2インスタンスでユーザのnproc値がある一定の値以上に増やせない場合の対応方法