web-dev-qa-db-ja.com

Ubuntu 16.04でコアの最大数を増やす方法

私は次の方法で1000x Dockerコンテナを起動しようとしています。

Nohup docker run --rm --name n-$1-$2 n-v2 bash -c "/root/sw/run.sh $1 $2" 2> ~/logs/log-$1-$2.log &

しかし、約500xのコンテナの後、次のエラーが発生し始めます。

fork: retry: No child processes

私がこれを実行しているサーバーには、48xコアと192 GBのRAMがあります...これらのコンテナを数千回も問題なくスピンアップできるはずです...この制限を増やす方法はありますか?

いくつかのグーグルを行った後、ulimit -uを介して最大フォークの数を確認できることがわかりました...これを変更する方法はありますか?

Soren Aの答えは正当なように見えますが、これで問題が解決されたようには見えません。同じ問題に出くわす前に、〜12287スレッド(cat /sys/fs/cgroup/pids/user.slice/user-1000.slice/pids.currentを介してチェス)に到達できます... /etc/security/limits.confのハード制限とソフト制限の両方が99999999に設定されています12287付近に上限がある

1

ulimit -u <value>で一時的な値を設定するか、/ etc/security/limits.confで次のような行を永続的に設定できます。

*    hard    nproc  64000
*    soft    nproc  64000

または、/ etc/security/limits.dの.confファイルでも同じです(例:必要に応じて、/ etc/security/limits.d/90-nproc.conf.

すべてのユーザー(*)に設定する代わりに、プロセスを開始するユーザーに対してのみ設定できます。これにより、他のユーザーがシステム上の多くのリソースを取得できなくなります。

1
Soren A