Apache 프로세스는 얼마나 오래 유지됩니까? 때 얼마나

아파치가 mod-php 프로세스를 분기 할 때 얼마나 오래 살아 있습니까? 응답이 전송되는 즉시 프로세스가 종료됩니까? 아니면 브라우저가 전체 응답을받을 때까지 프로세스가 계속 유지됩니까?



답변

mod-php를 사용한다면 preforkMPM을 사용하고있을 것입니다. MPM은 하위 프로세스를 생성하여 요청을 처리합니다. 기본 apache2.conf(또는 httpd.conf배포판에 따라) 파일의 지시문에 따라 관리되는 이러한 어린이의 수와 수명 .

다음과 같은 부분을 찾으십시오 (값이 다를 수 있음).

<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>

Apache는 StartServers자동으로 자식을 생성합니다 . 이러한 프로세스는 요청이 들어올 때까지 유휴 상태가됩니다. 어린이가 바쁘면 MaxClients로드를 처리 하기 위해 어린이에게 생성되어 MinSpareServers유휴 어린이가 새 요청을 받도록 유지 합니다. 일단 상황이 진정되면 카운트가 끝날 때까지 유휴 어린이가 사망합니다 MaxSpareServers.

당신이 묻는 비트는에 의해 처리됩니다 MaxRequestsPerChild. 0으로 설정하면 이는 어린이가 영원히 살 수 있음을 의미하며 이는 대부분의 아파치 설치에서 기본값입니다. 다른 것으로 설정하면 요청 수를 처리 한 후 현재로드에 관계없이 각 하위 프로세스가 강제로 종료되었다가 다시 시작됩니다.

프리 포크 MPM에 대한 자세한 내용은 여기 ( http://httpd.apache.org/docs/2.2/mod/prefork.html)를 참조 하십시오.


답변

httpd는 mod_php에 대한 프로세스를 포크하지 않습니다. mod_php가 포함 된 프로세스 자체를 분기합니다. 아동은 MaxRequestsPerChild요청 이 이행 될 때까지 계속 살아 있습니다. mod_php 자체는 스크립트가 종료되거나 시간 제한이 초과 될 때까지 PHP 스크립트에 대한 각 요청을 계속 처리합니다.