반응형
발단
Next.js 기반 프로젝트를 Podman으로 빌드하다가 다음 오류가 발생하였다.
해결 방법
docker-compose.yml
파일에 존재하는 Service 트리에 다음 코드를 붙여넣는다.
부족하다면, 값을 더 올리면 된다.
ulimits:
nofile:
soft: "65536"
hard: "65536"
build 명령으로 빌드하는 경우, --ulimit nofile=65536:65536
를 추가한다.
이는 run 명령에도 적용 할 수 있다.
원인
커널단에서 동작하는 ulimit은 프로세스의 자원 한도를 제한한다.
해결 방법에 적혀있듯이 soft와 hard 한도가 둘 다 적혀있는데, 이는 다음과 같다.
Soft Limit: 새로운 프로그램을 생성하면 기본으로 적용되는 한도.
Hard Limit: Soft Limit에서 최대로 늘릴수 있는 한도.
(단, Hard Limit은 Superuser 권한을 가진 계정에서만 조절 할 수 있음.)
또한, nofile은 해당 User가 열 수 있는 파일의 한도를 의미한다.
설정 전 Host OS의 nofile limit은 1024로 지정되어 있었다.
아마도 빌드시에 nofile limit은 Host OS의 limit을 따라 갔던 것으로 추정한다.
open files의 값을 40000으로 변경해줌과 동시에 해결방법을 적용해서 해결하였다.
이는 개인의 기호에 따라 변경 가능하다.
해결 방법에 위와 같은 내용을 적지 않은 이유는 위를 변경하지 않았어도 동작 했을 수 있기 때문에 같이 올리지 않았다.
만약 이에 대해 피드백이 들어온다면 그것에 맞게 글을 고칠 예정이다.
반응형