저는 Fedora에서 .server를 apache
사용하여 mod_perl
이메일을 자주 보내는 프로세스를 분기하고 있습니다. 그런 다음 분기가 종료됩니다.
갑자기 다음과 같은 결과가 나왔습니다 Cannot fork: Cannot allocate memory
. 사용 가능한 메모리가 충분하고(자세히 살펴보진 않았지만 사용된 메모리보다 사용 가능한 메모리가 더 많습니다) apache
실행 중인 프로세스가 너무 많지 않습니다. - 10? , CPU 사용량이 0에 가까워서 낮습니다. 서버 httpd를 다시 시작하면 문제가 정상적으로 해결되었습니다.
무엇이 이런 일을 일으킬 수 있습니까? 시스템에 너무 많은 프로세스가 할당되어 로드가 감소한 후에는 복구할 방법이 없는 문제가 있는 상태에 들어갈 가능성이 있습니까?
안타깝게도 당황해서 진단을 실행하는 대신 사이트를 시작하려고 했기 때문에 정보가 많지 않습니다. :-) 제 질문은 매우 일반적인 것입니다. 너무 많은 프로세스가 할당될 때 이러한 동작을 일으킬 수 있는 명확하지 않은 것이 있습니까? 아파치 내에서 포크하는 것과 관련된 특별한 것이 있습니까? 등
감사합니다!
답변1
리소스 한도에 도달한 것 같습니다. pam_limits.so 및 를 확인하세요 /etc/security/limits.conf
. 이를 통해 관리자는 한 사용자가 모든 시스템 리소스를 독점할 수 없도록 사용자가 사용할 수 있는 리소스에 대한 명시적인 제한을 설정할 수 있습니다. Apache가 지정된 제한에 도달하면 다른 사용자가 사용할 수 있는 리소스가 많더라도 위에서 설명한 대로 오류를 반환합니다. 대부분의 쉘에는 limit
or 명령도 있지만 ulimit
그것이 문제라고 생각하지 않습니다.