나는 수천 개의 동시 웹 소켓 연결을 처리하는 웹 서버를 실행하고 있습니다. 이것이 가능하려면 Debian 리눅스에서 (기본 이미지는 google/debian : GCE에서 실행되는 wheezy입니다.), 열린 파일의 기본 숫자가 1000으로 설정되어있는 경우, 보통 ulimit을 원하는 숫자 (64,000)로 설정합니다. .Docker가 limits.conf를 무시합니다 ("너무 많은 열린 파일"오류를 해결하려고합니다).
내 응용 프로그램을 도킹 해제하고 배포 한 경우를 제외하고 이것은 훌륭하게 작동합니다. 한 가지 종류의 제한 도구가 한계 정의를 무시한다는 사실을 알았습니다.
sudo bash -c "echo \"limit nofile 262144 262144\" >> /etc/init/docker.conf"
: 나는 사람들이이 일을하여 유사한 문제를 해결할 수 사실을 발견
MAX=64000
sudo bash -c "echo \"* soft nofile $MAX\" >> /etc/security/limits.conf"
sudo bash -c "echo \"* hard nofile $MAX\" >> /etc/security/limits.conf"
sudo bash -c "echo \"ulimit -c $MAX\" >> /etc/profile"
ulimit -c $MAX
어떤 연구를하고 후 : 나는 (안 용기 자체에서, 호스트 시스템의 모든) 다음을 시도
그리고 docker 서비스를 재부팅/다시 시작하십시오.
그러나 위의 모든 오류가 발생합니다. 응용 프로그램이 컨테이너 내부에서 실행될 때 "너무 많은 열린 파일"오류가 발생합니다 (문제를 해결하는 다음 작업을 수행함).
ulimit 설정이 제대로 작동했는지 알기 위해 컨테이너 내부에 ulimit -a
을 실행하려고 시도했지만 PATH의 일부인 실행 파일이 아닌 ulimit에 대한 오류가 발생합니다.
누구나이 사람을 만났거나 도커가 한계를 인식 할 수있는 방법을 제안 할 수 있습니까?
Docker 데몬 서비스도 다시 시작하십시오! – cgp