채택완료

아파치 설정관련~~(startServers, MaxSpareServers) 값에 따른 차이??

2017-02-23 (목) 15:32:08 5,458

root@server:/etc/apache2# netstat -nap | grep :80 | grep ESTABLISHED | wc -l

1755

일반적인 접속 시 1700~ 2000 정도입니다. 

아래와 같이 아파치 설정을 변경하였습니다.  

StartServers, MaxSpareServers 값을 변경하는것이 의미가 있을지?

<IfModule mpm_prefork_module>

    ServerLimit        4096

    StartServers              5

    MinSpareServers       5

    MaxSpareServers      10

    MaxClients         4096

    MaxRequestsPerChild   0

</IfModule>

<IfModule mpm_prefork_module>

    ServerLimit        4096

    StartServers         10

    MinSpareServers       5

    MaxSpareServers      15

    MaxClients         4096

    MaxRequestsPerChild   0

</IfModule>

|

답변 1개

채택된 답변
+20 포인트

아파치의 풀 관리 방식으로는 두가지 형태가 주로 사용됩니다.

하나는 prefork MPM 방식으로 프로세스를 미리 분기하여 쓰레드가 한개의 자식 프로세스를 여러개 사용하는 방식입니다.

prefork 방식은 쓰레드에 안전하지 않는 PHP등을 사용하기에 적합합니다.

StartServers 는 몇 개의 자식 프로세스를 미리 띄워놓을 것인가를 결정하고 MinSpareServers, MaxSpareServers는 아파치서버가 얼마나 많은 프로세스들이 요청을 기다리고 있는지 주기적으로 점검을 하게 되는데 이때 Min값보다 작으면 프로세스를 이 값으로 설정한 만큼 다시 만들어내고 Max값 보다 많아지게 되면 이 값으로 설정한 만큼 일부 프로세스를 종료 합니다.

<IfModule mpm_prefork_module>

    StartServers              5

    MinSpareServers       5

    MaxSpareServers      10

    MaxClients         150

    MaxRequestsPerChild   0

</IfModule>

worker MPM 방식은 여러 자식 프로세스가 각각 여러개의 쓰레드를 사용하며, prefork 방식에 비해 적은 메모리를 사용하여 확장성을 요구하는 곳에 적합합니다.

StartServers는 처음에 실행될 프로세스 개수이고 MinSpareThreads,MaxSpareThreads는 각 자식 프로세스가 이 지시작에 의해서 설정된 값 만큼의 고정된 쓰레드를 생성합니다.

<IfModule mpm_prefork_module>

    StartServers              2

    MinSpareThreads       25

    MaxSpareThreads      75

    MaxClients         150

    MaxRequestsPerChild   0

</IfModule>

결과적으로 아파치의 풀 관리 방식의 설정 차이만 있을 뿐 약간의 미세 조정은 큰 차이가 없습니다.

답변을 작성하려면 로그인이 필요합니다.