![Docker bash: 포크: 메모리를 할당할 수 없습니다.](https://linux55.com/image/76621/Docker%20bash%3A%20%ED%8F%AC%ED%81%AC%3A%20%EB%A9%94%EB%AA%A8%EB%A6%AC%EB%A5%BC%20%ED%95%A0%EB%8B%B9%ED%95%A0%20%EC%88%98%20%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
브리지당 1023 veth 장벽을 피하기 위해 별도의 데몬을 통해 4000개 이상의 도커 컨테이너를 만들려고 합니다. 그런데 점점 더 많아지네요
bash: 포크: 메모리를 할당할 수 없습니다
오류는 1800 정도입니다. 시스템 전체 리소스( ulimit
)를 늘렸지만 여전히 많은 inode와 메모리가 남아 있습니다. 도커 버전 1.8 RedHat 버전 7
답변1
bash는 사용되지 않으며 vfork
bash는 엄청납니다.
이로 인해 많은 포크가 많은 양의 가상 메모리를 소비하게 됩니다.
이는 사용자가 제어할 수 있는 문제라기보다는 시스템의 실제 메모리 리소스로 인해 발생한 문제일 가능성이 높습니다 ulimit
.
Bourne Shell이나 ksh93을 사용해 보셨나요? 둘 다 성능을 최적화하는 데 사용됩니다 vfork()
.
답변2
문제는 docker Zombie 프로세스가 커널 프로세스 용량을 소모하고 있다는 점인데, 이는 kernel.pid_max를 증가시켜 해결할 수 있습니다.