>  기사  >  운영 및 유지보수  >  Apache는 최대 동시 연결 수를 변경합니다.

Apache는 최대 동시 연결 수를 변경합니다.

王林
王林앞으로
2020-10-26 16:38:153145검색

Apache는 최대 동시 연결 수를 변경합니다.

Apache는 mpm_beos, mpm_event, mpm_netware, mpmt_os2, mpm_prefork, mpm_winnt, mpm_worker와 같은 다양한 운영 체제에 대해 여러 가지 MPM 모듈을 제공합니다. 조건이 허락한다면 실제 필요에 따라 지정된 MPM 모듈을 자체 Apache로 컴파일할 수 있습니다(Apache의 소스 코드는 공개되어 있으므로 사용자가 직접 컴파일할 수 있습니다). 그러나 컴파일 중에 선택하지 않으면 Apache는 다음 표에 따라 다양한 운영 체제에 따라 해당 MPM 모듈을 선택합니다. 이는 또한 다양한 플랫폼에 대해 Apache에서 권장하는 MPM 모듈입니다.

(권장 튜토리얼: apache)

다른 운영 체제의 기본 MPM 모듈

운영 체제 MPM 모듈 설명

Windowsmpm_winnt 소개할 필요 없음:)

Unix/Linuxmpm_prefork 소개할 필요 없음:)

mpm_beos Be Company에서 개발한 멀티미디어 운영체제입니다. 공식 버전의 업데이트가 중단되었습니다.

Netwarempm_netware는 NOVELL에서 출시한 네트워크 운영 체제입니다.

OS/2mpmt_os2는 원래 Microsoft와 IBM이 공동으로 개발한 운영 체제입니다. 현재는 IBM이 단독으로 개발하고 있습니다(Microsoft는 OS/2를 포기하고 Windows 개발로 전환했습니다)

mpm_event 모듈은 mpm_worker 모듈의 변형으로 간주될 수 있지만 실험적이므로 일반적으로 사용이 권장되지 않습니다.

물론 Apache는 다양한 운영 체제에 따라 해당 MPM 모듈을 컴파일한 완성된 Apache를 공식 웹사이트에서도 제공합니다. 여기를 클릭하여 Apache 공식 웹사이트에 들어가 다운로드할 수 있습니다.

또한 Apache가 내부적으로 어떤 종류의 MPM 모듈을 사용하는지 알고 싶다면 명령줄을 사용하여 Apache 설치 디렉터리 bin에 들어간 다음 httpd -l 명령을 입력하여 현재 사용되는 MPM 모듈을 볼 수 있습니다. 내부적으로 어떤 종류의 MPM 모듈.

컴파일된 모듈을 보려면 httpd -l 명령을 사용하세요

BeOS, NetWare, OS/2 및 기타 운영 체제는 일반적인 개발 작업에서 일반적이지 않으므로 여기서는 주로 Windows 및 Unix/Linux 운영 체제의 MPM 모듈에 중점을 둡니다. 시스템을 설명합니다. Windows 및 Unix/Linux 운영 체제에는 mpm_winnt, mpm_prefork 및 mpm_worker라는 세 가지 주요 MPM 모듈이 있습니다.

mpm_prefork 모듈

mpm_prefork 모듈은 주로 Unix/Linux 플랫폼의 Apache 서버에서 사용됩니다. 주요 작업 방법은 Apache 서버가 시작될 때 mpm_prefork 모듈이 여러 하위 프로세스를 미리 생성하는 것입니다(기본값은 5입니다). 클라이언트 수신 시 mpm_prefork 모듈은 클라이언트로부터 요청을 수신한 후 처리를 위해 해당 요청을 하위 프로세스로 전달하며, 각 하위 프로세스는 동시에 단일 요청을 처리하는 데만 사용할 수 있습니다. 현재 요청 수가 사전 생성된 하위 프로세스 수를 초과하는 경우 mpm_prefork 모듈은 추가 요청을 처리하기 위해 새 하위 프로세스를 생성합니다. Apache는 항상 다가오는 요청에 사용할 수 있는 예비 또는 유휴 하위 프로세스를 유지하려고 합니다. 이런 방식으로 클라이언트의 요청은 요청을 받은 후 하위 프로세스가 생성될 때까지 기다릴 필요가 없습니다.

mpm_prefork 모듈에서 각 요청은 하위 프로세스에 해당하므로 다른 두 모듈보다 더 많은 시스템 리소스를 차지합니다. 그러나 mpm_prefork 모듈의 장점은 각 하위 프로세스가 해당 단일 요청을 독립적으로 처리하므로 요청 중 하나에 문제가 발생하더라도 다른 요청에 영향을 미치지 않는다는 것입니다. 동시에 mpm_prefork 모듈은 스레드로부터 안전하지 않은 타사 모듈(예: 스레드로부터 안전하지 않은 PHP 버전)에 적용될 수 있으며 스레드 디버깅을 지원하지 않는 플랫폼에서 쉽게 디버깅할 수 있습니다. 또한 mpm_prefork 모듈은 mpm_worker 모듈보다 안정성도 높습니다.

mpm_worker 모듈

mpm_worker 모듈은 Unix/Linux 플랫폼의 Apache 서버에서도 주로 사용됩니다. mpm_prefork 모듈의 향상된 버전이라고 볼 수 있습니다. mpm_worker 모듈은 mpm_prefork 모듈과 유사하게 작동합니다. 그러나 동일한 요청을 처리할 때 프로세스 기반(예: mpm_prefork)은 스레드 기반 처리보다 더 많은 시스템 리소스를 차지합니다. 따라서 mpm_prefork 모듈과 달리 mpm_worker 모듈은 각 하위 프로세스가 고정된 수의 서비스 스레드와 수신 스레드를 생성하도록 허용하고 각 서비스 스레드가 클라이언트의 요청을 처리하도록 허용합니다. 수신 스레드는 액세스 요청을 모니터링하고 전송하는 데 사용됩니다. 처리 및 응답을 위해 서비스 스레드에 전달됩니다. Apache는 항상 예비 또는 유휴 서비스 스레드 풀을 유지하려고 시도합니다. 이러한 방식으로 클라이언트는 처리되기 전에 새 스레드나 프로세스가 설정될 때까지 기다릴 필요가 없습니다.

mpm_prefork 모듈과 비교하여 mpm_worker 모듈은 시스템 리소스 오버헤드를 더욱 줄일 수 있습니다. 또한 다중 프로세스를 사용하며, 각 프로세스에는 다중 스레드가 있기 때문에 완전 스레드 기반 처리 방법에 비해 어느 정도 안정성을 추가합니다.

mpm_winnt 모듈

mpm_winnt 모듈은 Windows 운영 체제에 특별히 최적화되고 설계된 MPM 모듈입니다. 별도의 하위 프로세스만 생성하고 이 하위 프로세스에 여러 스레드를 생성하여 요청을 처리합니다.

MPM 모듈 구성 수정

Apache의 MPM 모듈을 어느 정도 이해한 후에는 다양한 MPM 모듈에 대한 Apache의 최대 동시 연결 구성 수를 수정할 수 있습니다.

1. MPM 모듈 구성 파일 활성화

Apex 설치 디렉터리/conf/extra 디렉터리에 httpd-mpm.conf라는 구성 파일이 있습니다. 이 파일은 주로 MPM 모듈을 구성하는 데 사용됩니다. 그러나 기본적으로 Apache의 MPM 모듈 구성 파일은 활성화되어 있지 않습니다. 따라서 다음과 같이 httpd.conf 파일에서 이 구성 파일을 활성화해야 합니다.

# 서버 풀 관리(MPM 관련)conf/extra/httpd-mpm.conf 포함(이 앞에 있는 주석 기호 "#을 제거합니다. line ")

2. MPM 모듈 구성 파일에서 관련 구성을 수정합니다

MPM 모듈 구성 파일을 시작한 후 텍스트 편집기를 사용하여 구성 파일을 열 수 있습니다. 구성에 많은 구성이 있음을 알 수 있습니다. file Node, 아래 그림과 같이:

해당 구성은 Apache가 해당 MPM 모듈을 사용할 때만 적용됩니다.

이때 현재 MPM 모듈에 따라 해당 노드 아래의 매개변수 구성을 수정해야 합니다. Apache 서버에서 사용됩니다. 먼저 mpm_winnt 모듈 아래의 기본 구성을 살펴보겠습니다.

#mpm_winnt 모듈은 하나의 하위 프로세스만 생성하므로 여기서 단일 하위 프로세스에 대한 매개변수 설정은 전체 Apache에 대한 매개변수 설정과 동일합니다. . ThreadsPerChild 150# 권장 설정: 소형 웹사이트 = 1000 중형 웹사이트 = 1000~2000 대형 웹사이트 = 2000~3500 MaxRequestsPerChild 0# 권장 설정: 소형 = 10000 중형 또는 대형 = 20000~100000

해당 구성 매개변수는 다음과 같습니다.

ThreadsPerChild

하위 프로세스당 최대 동시 스레드 수입니다.

MaxRequestsPerChild

각 하위 프로세스가 처리할 수 있는 총 요청 수입니다. 처리된 요청의 누적 수가 이 값을 초과하면 하위 프로세스가 종료됩니다. 그런 다음 필요에 따라 새 하위 프로세스를 생성할지 여부를 결정합니다. 이 값을 0으로 설정하면 총 요청 수가 제한되지 않습니다(하위 프로세스가 종료되지 않음). ).

이 매개변수를 0이 아닌 값으로 설정하는 것이 좋습니다. 이렇게 하면 다음 두 가지 이점을 얻을 수 있습니다.

프로그램에서 발생할 수 있는 메모리 누수가 무한정 계속되고 메모리가 부족해지는 것을 방지할 수 있습니다.

프로세스에 제한된 수명을 부여하여 서버 로드가 줄어들 때 활성 프로세스 수를 줄이는 데 도움이 됩니다.

참고: 위의 요청 수 계산과 관련된 매개변수 중 KeepAlive 연결의 경우 첫 번째 요청만 계산됩니다.

그럼 mpm_perfork 모듈과 mpm_worker 모듈 아래의 기본 구성을 살펴보겠습니다.

#mpm_perfork 모듈 StartServers 5# 권장 설정: Small = Default Medium = 20~50 Large = 50~100MinSpareServers 5# 권장 설정: Keep with StartServers MaxSpareServers 10#과 일치 권장 설정: Small=20 Medium=30~80 Large=80~120 MaxClients 150# 권장 설정: Small=500 Medium=500~1500 Large=1500~3000MaxRequestsPerChild 0# 권장 설정: Small=10000 Medium 또는 Large =10000~500000 (추가로 ServerLimit 매개변수를 추가로 설정해야 하며 이는 MaxClients 값과 가장 일치합니다.)

# StartServers:  数量的服务器进程开始
# MinSpareServers:  最小数量的服务器进程,保存备用
# MaxSpareServers:  最大数量的服务器进程,保存备用
# MaxRequestWorkers:  最大数量的服务器进程允许开始
# MaxConnectionsPerChild:  最大连接数的一个服务器进程服务

prefork 제어 프로세스가 처음에 "StartServers" 하위 프로세스를 설정한 후 MinSpareServers 설정의 요구 사항을 충족하기 위해 새 프로세스를 생성하고, 1초 동안 기다렸다가 계속 2개를 생성하고, 1초 더 기다렸다가 4개를 계속 생성합니다. 이렇게 하면 생성된 프로세스 수가 기하급수적으로 늘어 최대 32개까지 늘어납니다. 둘째, MinSpareServers에서 설정한 값이 충족될 때까지. 이 모드를 사용하면 요청이 들어올 때 새 프로세스를 생성할 필요가 없으므로 시스템 오버헤드가 줄어들고 성능이 향상됩니다. MaxSpareServers는 유휴 프로세스의 최대 수를 설정합니다. 유휴 프로세스 수가 이 값보다 크면 Apache는 일부 중복 프로세스를 자동으로 종료합니다. 이 값을 너무 크게 설정하지 마십시오. 값이 MinSpareServers보다 작은 경우 Apache는 자동으로 MinSpareServers+1로 조정합니다. 사이트 로드가 많은 경우 MinSpareServers와 MaxSpareServers를 모두 늘리는 것이 좋습니다.

MaxRequestsPerChild는 각 하위 프로세스가 처리할 수 있는 요청 수를 설정합니다. 각 하위 프로세스는 "MaxRequestsPerChild" 요청을 처리한 후 자동으로 삭제됩니다. 0은 무한함을 의미합니다. 즉, 하위 프로세스는 절대 파괴되지 않습니다. 기본 설정을 0으로 설정하면 각 하위 프로세스가 더 많은 요청을 처리할 수 있지만 0이 아닌 값으로 설정하면 두 가지 중요한 이점도 있습니다.

1 우발적인 메모리 누수를 방지할 수 있습니다. 2. 서버 부하가 감소하면 하위 프로세스 수가 자동으로 감소됩니다.

따라서 이 값은 서버 부하에 따라 조정될 수 있습니다.

MaxRequestWorkers 지시어 세트는 동시에 처리할 수 있는 요청 수를 제한합니다. MaxRequestWorkerslimit 내의 모든 연결 시도는 일반적으로 ListenBacklog를 기반으로 하는 최대 지시어 수까지 대기열에 추가됩니다.

Apache 2.3.13 이전 버전에서는 MaxRequestWorkers를 MaxClients라고 불렀습니다.

(MaxClients는 이 명령어 중 가장 중요합니다. Apache가 동시에 처리할 수 있는 요청을 설정합니다. Apache 성능에 가장 큰 영향을 미치는 매개변수입니다. 기본값인 150은 충분하지 않습니다. 총 요청 수가 이 값에 도달하면(ps -ef|grep http|wc -l로 확인할 수 있음) 처리된 요청이 완료될 때까지 후속 요청이 대기하게 됩니다. 이것이 시스템 리소스가 많이 남아 있는 주된 이유입니다. 이유는 이론적으로 값이 클수록 더 많은 요청을 처리할 수 있지만 Apache의 기본 제한은 256을 초과할 수 없습니다.

#mpm_worker 모듈 StartServers 2#권장 설정: 소형=기본 중간=3~5 대형=5~10MaxClients 150#권장 설정: 소형=500 중간=500~1500 대형=1500~3000MinSpareThreads 25#권장 설정: 소형=기본 중간 =50~100 Large=100~200MaxSpareThreads 75#권장 설정: Small=Default Medium=80~160 Large=200~400 ThreadsPerChild 25#권장 설정: Small=Default Medium=50~100 Large=100~200MaxRequestsPerChild 0#권장 설정 : Small = 10000 Medium 또는 Large = 10000~50000 (또한 MaxClients/ThreadsPerChild가 16보다 큰 경우 ServerLimit 매개변수를 추가로 설정해야 합니다. ServerLimit은 MaxClients/ThreadsPerChild 값보다 크거나 같아야 합니다.)

해당 구성 매개변수는 다음과 같이 작동합니다.

StartServers

Apache를 시작할 때 생성되는 하위 프로세스 수입니다.

MinSpareServers

유휴 상태의 최소 하위 프로세스 수입니다.

유휴 하위 프로세스는 요청을 처리하지 않는 하위 프로세스를 의미합니다. 현재 유휴 하위 프로세스 수가 MinSpareServers보다 적으면 Apache는 초당 최대 1개의 속도로 새 하위 프로세스를 생성합니다. 이 매개변수 조정은 매우 바쁜 시스템에서만 필요합니다. 이 값은 너무 커서는 안 됩니다.

MaxSpareServers

유휴 상태의 최대 하위 프로세스 수입니다.

이 매개변수는 매우 바쁜 기계에서만 조정하면 됩니다. 이 값은 너무 커서는 안 됩니다. 이 지시어의 값을 MinSpareServers보다 작게 설정하면 Apache는 자동으로 MinSpareServers+1로 수정합니다.

MaxClients

동시 연결에 허용되는 최대 요청 수입니다.

MaxClients 제한을 초과하는 모든 요청은 ListenBacklog 지시문 제한의 최대값에 도달할 때까지 대기 대기열에 들어갑니다.

스레드되지 않은 MPM(즉, mpm_prefork)의 경우 MaxClients는 클라이언트 요청을 처리하는 데 사용할 수 있는 최대 하위 프로세스 수를 나타냅니다. 기본값은 256입니다. 이 값을 늘리려면 ServerLimit도 늘려야 합니다.

스레드 또는 혼합 MPM(즉, mpm_beos 또는 mpm_worker)의 경우 MaxClients는 클라이언트 요청을 처리하는 데 사용할 수 있는 최대 스레드 수를 나타냅니다. 스레드 mpm_beos의 기본값은 50입니다. 혼합 MPM의 기본값은 16(ServerLimit) x 25(ThreadsPerChild)입니다. 따라서 MaxClients를 16개 이상의 프로세스로 늘려 제공할 경우 ServerLimit 값도 늘려야 합니다.

MinSpareThreads

유휴 상태의 최소 스레드 수입니다.

다양한 MPM은 이 명령을 다르게 처리합니다.

mpm_worker의 기본값은 75입니다. 이 MPM은 전체 서버를 기반으로 유휴 스레드 수를 모니터링합니다. 서버의 총 유휴 스레드 수가 너무 적으면 하위 프로세스가 새로운 유휴 스레드를 생성합니다. mpm_netware의 기본값은 10입니다. 이 MPM은 단일 하위 프로세스만 실행하므로 물론 이 MPM은 전체 서버를 기반으로 유휴 스레드 수도 모니터링합니다. mpm_beos 및 mpmt_os2는 mpm_netware와 유사하게 작동합니다. mpm_beos의 기본값은 1이고 mpmt_os2의 기본값은 5입니다.

MaxSpareThreads

최대 유휴 스레드 수입니다.

다양한 MPM은 이 명령을 다르게 처리합니다.

mpm_worker의 기본값은 250입니다. 이 MPM은 전체 서버를 기반으로 유휴 스레드 수를 모니터링합니다. 서버의 총 유휴 스레드 수가 너무 크면 하위 프로세스가 초과 유휴 스레드를 종료합니다. mpm_netware의 기본값은 100입니다. 이 MPM은 단일 하위 프로세스만 실행하므로 물론 이 MPM은 전체 서버를 기반으로 유휴 스레드 수도 모니터링합니다. mpm_beos 및 mpmt_os2는 mpm_netware와 유사하게 작동합니다. mpm_beos의 기본값은 50이고 mpmt_os2의 기본값은 10입니다.

참고: ServerLimit은 Apache가 생성할 수 있는 최대 프로세스 수를 나타냅니다. Apache에는 컴파일 타임에 ServerLimit 20000(mpm_prefork 모듈의 경우 ServerLimit 200000)의 내부 하드 제한이 있다는 점은 주목할 가치가 있습니다. 이 한도를 초과할 수 없습니다.

이 명령을 사용할 때는 특히 주의하세요. ServerLimit을 실제로 필요한 것보다 훨씬 높은 값으로 설정하면 너무 많은 공유 메모리가 할당됩니다. ServerLimit 및 MaxClients가 시스템 처리 능력을 초과하도록 설정된 경우 Apache가 시작되지 않거나 시스템이 불안정해질 수 있습니다.

참고: 관련 매개변수를 구성할 때 먼저 서버의 하드웨어 성능(예: CPU, 메모리 등)이 충분한지 확인하세요. 서버 시작 이후 서버의 실행 시간이 늘어나면서 서버의 메모리 사용량도 늘어난 것을 발견했다면, 프로그램의 메모리 누수일 수 있습니다. MaxRequestsPerChild 매개변수의 값을 하향 조정하여 메모리 누수로 인한 영향을 줄여주세요. 가능한 한 빨리 진행하여 프로그램의 어느 부분에 문제가 있는지 알아보세요.

위 내용은 Apache는 최대 동시 연결 수를 변경합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 jianshu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제

관련 기사

더보기