>  기사  >  php教程  >  Apache가 동시 연결 요청 수를 늘리는 방법

Apache가 동시 연결 요청 수를 늘리는 방법

WBOY
WBOY원래의
2016-08-30 09:20:321203검색

Apache를 HTTP 서버로 사용하는 사이트에서는 필연적으로 이 문제에 직면하게 됩니다. Apache의 로드는 매우 낮지만 웹 서버에 액세스하는 속도는 매우 느립니다. 스크립트 프로그램의 원인을 제외하고 보면 기본적으로 Apache 설정의 문제입니다.

다음 내용은 이 문제를 해결하는 데 도움이 될 수 있습니다.
1. 먼저 Apache에서 사용하는 MPM(Multi-Processing Module, 다중 처리 모듈)을 이해해야 합니다

MPM은 Apache의 핵심 역할은 네트워크 연결을 관리하고 요청을 예약하는 것입니다.
Apache2.0의 MPM은 세 가지 유형(perfork, 작업자, 이벤트)으로 구분됩니다. perfork는 Apache1.3에서 상속되었으며, 보다 안정적인 성능과 더 나은 호환성을 제공할 수 있습니다. Worker는 Apache2.0에 추가된 새로운 방법으로 스레드 제어 방법을 채택하여 시스템 오버헤드와 프로세스를 절약할 수 있습니다. perfork보다 데이터가 많지만 동시에 호환성이 좋지 않고 많은 오래된 프로그램이 작업자에서 작동할 수 없습니다. 이벤트는 아직 실험 단계에 있으므로 각 작업에 다른 프로세스를 할당하면 안 됩니다. 이때 사용됩니다.
httpd -l
명령을 통해 현재 Apache에서 사용되는 MPM을 확인할 수 있습니다. 이 기사에서는 Perfork 방법에 대해서만 설명합니다

2. Perfork 작동 방식 이해

Apache2.0의 구성 파일 httpd.conf를 보면 perfork의 구성 부분을 볼 수 있는데 대략 다음과 같습니다.

서버한도 256
시작서버 5
MinSpareServer 10
MaxSpareServers 15
최대클라이언트 256
MaxRequestsPerChild 4000
Apache가 시작되면 Apache는 자동으로 StartServers 프로세스를 생성하고 MinSpareServers와 MaxSpareServers 사이의 유휴 프로세스 수를 유지하기 위해 최선을 다합니다.
유휴 프로세스가 MinSpareServers보다 작은 경우 Apache는 초당 약 1개의 속도로 새 프로세스를 생성합니다.
유휴 프로세스가 MaxSpareServers보다 작은 경우 Apache는 초과 유휴 프로세스를 삭제하고 서버 리소스를 해제합니다.
최대 프로세스 수는 MaxClients에 의해 제어됩니다. Apache1.3에서는 최대값을 256개까지만 설정할 수 있습니다. 그러나 Apache2.0에서는 구성 시작 부분에 ServerLimit 항목을 추가하여 256개 제한을 깰 수 있습니다. 이 경우 MaxClients ≤ ServerLimit ≤ 20000
MaxRequestsPerChild는 처리 후 각 프로세스가 자동으로 삭제되는 요청 수를 제어하는 ​​데 사용됩니다. 이 매개변수를 0으로 설정하면 무제한(즉, 프로세스가 삭제되지 않음)을 나타낼 수 있습니다.



3. 퍼포크 최적화

우선, 상대적으로 로드가 많은 웹사이트의 경우 프로세스 제한인 256개로는 충분하지 않습니다. 서버가 제한인 256개에 도달하면 다음 액세스를 대기해야 하기 때문에 일부 서버에서는 로드가 발생합니다. 높지는 않지만 접속이 느린 이유 중 하나. 따라서 먼저 서버가 사용 중일 때 서버의 프로세스 수를 이해해야 합니다.
ps -ef|grep httpd|wc -l 명령을 통해 현재 시스템의 Apache 프로세스 수를 알 수 있으며, ServerLimit 및 MaxClients 설정을 통해 서버의 소프트 확장 목적을 달성할 수 있습니다.

그러다가 트래픽이 가장 많은 기간에는 갑자기 동시 연결이 많아졌다가 갑자기 방문 수가 훨씬 적어지는 현상이 자주 발생합니다. Apache가 충분한 수의 준비 프로세스를 준비하지 않으면 액세스는 Apache가 초당 하나의 새 프로세스를 추가할 때까지 기다린 다음 중복 프로세스를 삭제할 수 있습니다. 그러면 Apache는 프로세스를 생성하고 삭제하는 데에만 바쁠 수 있으므로 액세스가 크게 줄어듭니다. 속도. Apache가 쓸모없는 작업을 수행하느라 바쁠 필요가 없도록 StartServers, MinSpareServers 및 MaxSpareServers를 적절하게 늘릴 수 있습니다.

마지막으로 MaxRequestsPerChild를 0으로 설정하지 않는 것이 좋습니다. 0이 아닌 값으로 설정하면 Apache에서 실행 중인 애플리케이션이 언제 잘못되어 메모리 누수를 일으킬지 알 수 없으므로 메모리 누수로부터 Apache 프로세스를 보호할 수 있습니다.

설정하고 나면 다음과 같습니다.

ServerLimit 1000
시작서버 30
MinSpareServer 30
MaxSpareServers 45
최대클라이언트 1000
MaxRequestsPerChild 4000

세부 단계 http://www.liaoxiansheng.cn/?p=496

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.