私は別々のデーモンを介して4000以上のDockerコンテナを作成しようとしています(ブリッジあたり1023のvethの障壁を回避するため)。しかし、私は
bash: fork: メモリを割り当てられません
1800 あたりでエラーが発生します。システム全体のリソース ( ulimit
) を増やしましたが、inode とメモリは十分に残っています。Docker バージョン 1.8 RedHat バージョン 7
答え1
bash は使用されずvfork
、bash は巨大です。
これにより、多くのフォークが大量の仮想メモリを消費することになります。
これは、 を介して制御できるものよりも、システム上の実際のメモリ リソースによって発生する問題である可能性が最も高いですulimit
。
Bourne Shell または ksh93 を使用しようとしましたか? どちらもvfork()
パフォーマンスを最適化するために使用されます。
答え2
問題は、カーネルプロセス容量を消費していたdockerゾンビプロセスにあり、kernel.pid_maxを増やすことで問題を解決できました。