다음에서는 기본적으로 설치되지 않는 몇 가지 중요한 모듈에 대해 설명합니다. . (프리포크 제외)
일반적으로 사용되는 모듈:
가장 일반적으로 사용되는 모듈은 현재 애플리케이션에서는 필요하지 않은 PHP 및 JAVA 애플리케이션 서버의 프런트 엔드일 수 있습니다. 또한, 성능면에서 mod_gzip을 사용하면 트래픽을 약 40% 정도 줄일 수 있어 전송을 위한 머신의 부하도 줄일 수 있으므로 사용하는 것이 좋습니다. 우리가 사용하는 파일은 상대적으로 작기 때문에 압축 알고리즘의 시간 오버헤드와 전송 부하 감소가 비용 효율적인지 확인할 수 있습니다. Mod_expires는 반복되는 요청을 약 10%까지 줄일 수 있으므로 반복적인 사용자는 서버에 전혀 요청하지 않고도 지정된 페이지 요청의 결과를 로컬로 캐시할 수 있습니다. 하지만 우리는 메모리 파일 시스템을 사용하고 있기 때문에 캐시 최적화를 완전히 무시할 수 있습니다.
역방향 프록시 기반 웹 가속:
squid와 mod_proxy 모두 역방향 프록시 가속을 달성할 수 있습니다. 캐시 기반 프록시 가속은 원래 웹 서비스보다 훨씬 빠릅니다. 동일한 메모리 파일 시스템이 필요하지 않습니다.
성능에 영향을 미치는 주요 지표 MPM:
MPM(다중 처리 모듈, 다중 채널 처리 모듈). MPM은 다른 Apache 모듈과 매우 유사해 보입니다. 다른 유형의 모듈과 달리 Apache에는 MPM이 하나만 실행되어야 합니다. . MPM
$ ./configure --help|grep mpm
을 지정하는 방법은 다음과 같이 표시됩니다.
--with-mpm=MPM
사용할 Apache의 프로세스 모델을 선택하세요.
MPM={beos|worker|prefork|mpmt_os2|perchild|leader|threadpool}
Beos와 mpmt_os2는 BeOS와 OS의 기본 모델입니다. /2 각각 MPM, perchild는 주로 서로 다른 사용자 및 그룹으로 서로 다른 하위 프로세스를 실행하도록 설계되었습니다. 이는 CGI가 필요한 여러 가상 호스트를 실행할 때 특히 유용하며 버전 1.3의 SuExec 메커니즘보다 더 나은 작업을 수행합니다. 리더와 스레드 풀은 모두 작업자 기반 변형이며 아직 실험 단계에 있으므로 어떤 경우에는 예상대로 작동하지 않으므로 Apache 관계자는 사용을 권장하지 않습니다. 따라서 우리는 성능과 가장 큰 관계가 있는 두 가지 제품 수준 MPM인 프리포크와 작업자에 대해 주로 설명합니다.
"--with-mpm"으로 특정 MPM을 명시적으로 지정하지 않으면 prefork가 Unix 플랫폼의 기본 MPM이 됩니다.
Prefork 자체는 스레드를 사용하지 않습니다. 버전 2.0은 이를 사용하여 버전 1.3과의 호환성을 유지하며, 서로 다른 요청을 처리하기 위해 별도의 하위 프로세스를 사용하며, 프로세스는 서로 독립적이므로 하나가 됩니다. 가장 안정적인 MPM 중 하나입니다.
프리포크의 작동 원리는 제어 프로세스가 처음에 "StartServers" 하위 프로세스를 설정한 후 MinSpareServers 설정의 요구 사항을 충족하는 프로세스를 생성하고 1초를 기다린 후 계속해서 두 개를 더 생성하는 것입니다. , 그리고 1초 더 기다립니다. 계속해서 4개를 더 생성합니다... 이렇게 하면 생성되는 프로세스 수가 MinSpareServers에서 설정한 값이 충족될 때까지 초당 최대 32개까지 기하급수적으로 늘어납니다. 이것이 프리포크가 들어오는 곳이다. 이 모드를 사용하면 요청이 도착할 때 새 프로세스를 생성할 필요가 없으므로 시스템 오버헤드가 줄어들고 성능이 향상됩니다.
위 내용은 아파치 성능 최적화(3) 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!