Apache는 높은 동시성을 어떻게 처리합니까? httpd의 각 프로세스는 많은 양의 메모리와 CPU를 차지합니다.
Apache의 httpd.exe 프로세스가 메모리를 많이 먹는 문제를 해결하기 위한 한 가지 트릭 PublishedbycktMay02 ASP 프로그램을 두 개 실행해야 해서 어제 Apache를 이기기 위해 서버를 변경했는데 매우 심각한 문제가 발생했습니다. 즉, httpd.exe는 메모리를 많이 소모합니다. 시간이 오래 걸릴수록 메모리가 소진되어 프로그램이 충돌할 때까지 아파치의 공식 웹사이트를 확인하면 기본 설정이 적합한 것으로 나타났습니다. 2-8G 메모리가 있는 서버의 경우... 해결 방법은 http.conf 구성 파일을 수정하고 Threadsperchild 매개 변수를 약 50으로 설정하는 것입니다(구성에 따라 적절하게 줄일 수 있습니다. 서버 구성이 50으로 설정되어 있습니다). 매우 나쁨) 마찬가지로 MaxRequestsPerChild 값을 적절히 줄입니다. Apache를 저장하고 다시 시작합니다. ThreadsPerChild의 의미는 시스템 시작 시 기본적으로 시작되는 대기 스레드 수로, 고객 요청 처리를 기다리는 데 사용됩니다. AcceptEx를 사용하면 메모리 증가가 눈에 띄지 않으며 다시 20M 정도까지 줄어들 수 있습니다. 이는 사용자가 스레드에 일부 리소스를 할당하도록 요청하기 때문일 수 있지만 사용자 액세스가 완료된 후에는 가능합니다. , 이러한 리소스는 해제됩니다(이 리소스는 아마도 모두 사용자와 관련되어 있으며 다음 사용자가 보유할 수 없으므로 해제됩니다). 그러나 AcceptEx가 비활성화된 후에는 Apache의 각 스레드가 네트워크 이벤트를 처리해야 하므로 각 스레드에는 사용자 요청을 처리한 후 일부 리소스가 해제되지 않고 다음 사용자를 위해 재사용될 수 있습니다. 내부에. 스레드 수를 550으로 설정했기 때문에(인터넷에서 "memoryleak"과 유사한 문제를 겪은 많은 사람들이 더 큰 값으로 설정했거나 머신의 가상 메모리가 더 작았을 것으로 추정됩니다) 스레드가 최대 메모리에 도달하면 이 현상은 사람들에게 메모리 누수가 있다는 인상을 줍니다. 왜냐하면 요청이 들어온 후 스레드는 일부 리소스를 할당(일시적으로 해제되지 않음)하기 때문입니다. 10명이 동시에 액세스하면 아마도 방문이 끝난 후에는 50M이 될 것입니다. 이 사이트의 캐싱 메커니즘은 지난 밤 이후로 큰 변화를 겪었습니다. 이제 우리는 순전히 정적 페이지를 생성하기 위해 cos를 사용합니다. 다른 문제를 발견하면 알림을 보내주세요. 또한 댓글 검토가 훨씬 쉬워졌으며 일반 댓글이 즉시 표시될 수 있습니다.