실행하면 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);
- 루트 "rss"로 실행하는 경우:
ulimit -m
프로세스의 최대 크기( )- "rtprio": 최대 실시간 스케줄링 우선순위(
ulimit -r
)- "rttime": 차단 시스템 호출 간의 최대 실시간 실행량
- "sigpending": 보류 중인 신호의 최대 수(
ulimit -i
) "stack": 최대 스택 크기(ulimit -s
)
소프트 제한과 하드 제한은 무엇이며 이에 대한 내용은 에 설명되어 있습니다 man limits.conf
.
hard
엄격한 리소스 제한을 적용하는 데 사용됩니다. 이러한 제한은 수퍼유저가 설정하고 커널에 의해 시행됩니다. 사용자는 시스템 리소스에 대한 요구 사항을 이 값 이상으로 늘릴 수 없습니다.soft
소프트 리소스 제한을 적용하는 데 사용됩니다. 이러한 제한은 사용자가 기존의 하드 제한에서 허용하는 제한 내에서 위나 아래로 이동할 수 있는 제한입니다. 일반적인 시스템 사용의 경우 이 태그로 지정된 값이 기본값으로 간주될 수 있습니다.
;tldr: 열 수 있는 파일 수에 대해 커널이 부과하는 하드 및 소프트 제한을 설정합니다.