実行すると、buildah bud
次のエラーが発生します。
npm ERR! code EMFILE
npm ERR! syscall open
npm ERR! path /root/.npm/_cacache/index-v5/cd/a5/aca06eccd914d83e3be09412f45e00ceac1150a83df0e32d015284f4c8f6
npm ERR! errno -24
npm ERR! EMFILE: too many open files, open '/root/.npm/_cacache/index-v5/cd/a5/aca06eccd914d83e3be09412f45e00ceac1150a83df0e32d015284f4c8f6'
この問題をどのように解決できますか?
答え1
この問題は次の方法で解決できます。この方法は--ulimit
buildah bud --ulimit nofile=4096:4096
説明--ulimit nofile=4096:4096
このオプションは次のとおりです。buildah build
、
--ulimit type=soft-limit[:hard-limit]
RUNコマンドの処理時に開始されたプロセスに適用されるリソース制限を指定します。このオプションは複数回指定できます。認識されるリソースの種類は次のとおりです。
- "core": 最大コアダンプサイズ(
ulimit -c
)- "cpu": 最大 CPU 時間(
ulimit -t
)- "data": プロセスデータセグメントの最大サイズ(
ulimit -d
)- "fsize":新しいファイルの最大サイズ(
ulimit -f
)- "locks": 最大ファイルロック数(
ulimit -x
)- "memlock": ロックされたメモリの最大量(
ulimit -l
)- "msgqueue":メッセージキューの最大データ量(
ulimit -q
)- 「nice」:親和性調整(nice -n、ulimit -e)
- "nofile": 最大オープンファイル数(
ulimit -n
)- "nofile":開かれたファイルの最大数(1048576)。
- ルート "nproc" によって実行される場合: 最大プロセス数(
ulimit -u
)- 「nproc」:最大プロセス数(1048576)。
- root "rss"で実行する場合:
ulimit -m
プロセスの最大サイズ()- "rtprio":最大リアルタイムスケジューリング優先順位(
ulimit -r
)- "rttime": ブロックシステムコール間の最大リアルタイム実行量
- "sigpending": 保留中の信号の最大数(
ulimit -i
) "stack": 最大スタックサイズ(ulimit -s
)
ソフト制限とハード制限とは何ですかman limits.conf
?
hard
厳格なリソース制限を適用するために使用されます。これらの制限はスーパーユーザーによって設定され、カーネルによって強制されます。ユーザーは、システムリソースの要件をこの値以上に増やすことはできません。soft
ソフトリソース制限を適用するために使用されます。これらの制限は、ユーザーが既存のハード制限で許可されている制限内で上下に移動できる制限です。一般的なシステム使用の場合、このタグで指定された値はデフォルト値と見なすことができます。
;tldr: 開くことができるファイル数にカーネルが課すハードおよびソフト制限を設定します。