buildah를 사용하여 이미지를 빌드할 때 다음 메시지가 표시됩니다. EMFILE: 열린 파일이 너무 많습니다.

buildah를 사용하여 이미지를 빌드할 때 다음 메시지가 표시됩니다. EMFILE: 열린 파일이 너무 많습니다.

실행하면 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: 열 수 있는 파일 수에 대해 커널이 부과하는 하드 및 소프트 제한을 설정합니다.

관련 정보