아파치 튜닝
아파치의 병렬처리와 MPM 병렬처리의 구현모델 - 프로세스를 여러 개 생성해서 병렬처리를 실현하는 멀티프로세스 모델 - 프로세스가 아니라 보다 경량의 실행단위인 쓰레드를 사용하는 멀티쓰레드 모델 - 입출력을 감시해서 이벤트가 발생하는 타이밍에 처리를 전환하는, 시그널 쓰레드로 병렬처리를 수행하는 이벤트 구동 모델 MPM(Multi Processing Module) http://httpd.apache.org/docs/2.2/ko/mod/ prefork: 미리 복수의 프로세스를 생성해서 클라이언트의 접속에 대비하는 멀티프로세스 모델 <안전지향, 후방호환성이 높은 MPM> worker: 멀티쓰레드와 멀티프로세스의 하이브리드형 <확장성이 높은 MPM> - prefork를 worker로 변경하더라도 하나의 클라이언트에 대한 응답시간이 고속화되는 것은 아니다. - prefork를 worker로 변경하더라도 메모리가 충분하다면 동시에 처리할 수 있는 접속 수는 변하지 않는다. - prefork를 worker로 변경하더라도 대량의 컨텍스트 스위치가 없다면(동시에 병렬적으로 대량의 액세스가 없다면)효과는 크지 않다. - 이용할 수 있는 메모리 용량이 그다ㅏ지 크지 않은 경우나, 메모리 소비량을 줄이고자 할 경우. 이런 경우, 프로세스보다 메모리 소비량이 적은 쓰레드의 이점이 살아난다. - 컨텍스트 스위치 횟수가 많아서 그만큼의 CPU 리소스를 줄이고자 할 경우, 즉 대량의 액세스로 인한 CPU사용률을 줄이고자 할 경우. 프로세스보다 쓰레드 쪽이 컨택스트 스위치 비용은 낮으므로 CPU소비가 줄어든다. httpd.conf 설정 아파치의 안전판 MaxClients prefork의 경우 - ServerLimit: 서버 수 , 이를테면 prefork에서는 프로세스 수의 상한 - MaxClients: 동시에 접속할 수 있는 클라이언트 수의 상한 - MaxRequestsPerChild 카피온 라이트에 의한 메모리 공유는 시간의 경과에 따라 공유율이 하락해갔다. 이를 ...