나는 현재 아파치 서버가 실행이 mpm-prefork
와 mod_php
512M 실제 / 1024M burstable RAM과 오픈 VZ VPS (NO 스왑)에. 일부 테스트를 실행 한 후 Apache가 얻는 최대 프로세스 크기는 23M이므로 MaxClients
25로 설정 했습니다 (23M x 25 = 575MB, 나에게 좋습니다). 내 서버에서 일부로드 테스트를 실행하기로 결정했고 결과가 당황했습니다.
내가 사용하고 ab
워드 프레스 블로그의 메인 페이지를 요청 내 데스크탑 컴퓨터에.
ab
24 개의 동시 연결로 실행하면 모든 것이 정상으로 보입니다. 물론, CPU는 올라가고, 여유 RAM은 내려갑니다. 결과는 요청 당 약 2-3 초의 응답 시간입니다.
그러나 ab
25 개의 동시 연결 (서버 제한)로 실행 하면 몇 초 후에 Apache가 중단됩니다. 요청 처리를 시작한 다음 응답을 중지하고 CPU가 100 % 유휴 상태로 돌아가 ab
시간 초과됩니다. 아파치 로그에 도달했다고합니다 MaxClients
.
이런 일이 발생하면 Apache는 25 개의 실행중인 프로세스 (서버 상태를 확인하면 모두 "W"에 있음)로 TimeOut
고정되어 프로세스가 종료되고 서버가 다시 응답하기 시작한 후에 만 설정됩니다 (제 경우에는 설정되어 있습니다) ~ 45).
내 질문 : 예상되는 동작입니까? 왜 아파치가 도착했을 때 죽는가 MaxClients
? 24 개의 연결로 작동하는 경우 25와 작동하지 않아야합니다. 각 요청에 응답하는 데 더 많은 시간이 걸리고 나머지는 대기열에 넣는 것입니까?
실행중인 모든 어린이 ab
가 서버에 동시 연결을 설정하여 웹 서버를 죽일 수 있다는 것은 다소 이상하게 들립니다 MaxClients
.