ServerLimit, MaxClients, MaxRequestsPerChild 지시문에 대한 최적의 값 및 MaxClients 아파치 지시문에 대한 최적의 값을

트래픽이 많은 사이트에서 동적 콘텐츠가 많으며 주로 사용자가 생성합니다.

이 서버는 전용 서버이며 총 2.13GHz 프로세서에서 총 4 개의 Intel Xeon CPU X3210이 있습니다. 서버에 4GB의 RAM이 있고 MySQL 데이터베이스가 별도의 서버에서 실행된다는 것을 고려할 때 ServerLimit 및 MaxClients 아파치 지시문에 대한 최적의 값을 알아야합니다. 패널은 CentOS가 포함 된 DirectAdmin입니다.

아래는 현재 지시문이지만 5k 명 이상의 사용자가있는 피크 시간에는 중요한 지연이 눈에 띄게 나타납니다. 페이지가 빠르게 생성되는 것처럼 보이므로 (페이지 생성 시간 카운터를 구현 한) MySQL의 결함이 아닙니다. 페이지가 응답을 시작하고 브라우저로 전송 될 때까지 연결 지연.

<IfModule prefork.c>
    StartServers     800
    MinSpareServers   20
    MaxSpareServers   60
    ServerLimit      900
    MaxClients       900
    MaxRequestsPerChild  2000
</IfModule>
Timeout 90
KeepAlive On
KeepAliveTimeout 5

top 명령을 사용하여 서버를 모니터링하면 CPU 사용량은 피크 시간에 20 % ~ 30 %를 넘지 않습니다. 그 당시 MySQL 서버는 30 ~ 50 %의 사용량을 가지고 있으며 느린 쿼리를 수정하기 위해 끊임없이 노력하고 있지만 다른 문제입니다. 정적 페이지도 피크 시간에로드하는 데 시간이 오래 걸리기 때문에 DB 병목 현상이 아니라는 것을 알고 있습니다.

이러한 가치를 최적화하기위한 조언은 대단히 감사하겠습니다.



답변

MaxClients가 WAY WAY WAY가 너무 높습니다. 아파치 프로세스의 현재 크기는 얼마입니까? x 900을 곱하십시오. 4GB보다 큽니까? 그렇다면 머신이 교체 될 가능성이 있습니다. 필자는 보통 박스에 MaxClients = 2x vCPU (grep -c processor / proc / cpuinfo)로 시작합니다. 이 경우 약 8입니다. 그런 다음 MaxClients x 아파치 프로세스 크기가 4GB를 넘지 않아야합니다.

클라이언트의 연결 유형에 따라 거기에서 MaxClient를 설정할 수 있습니다. (다이얼 업 사용자는 숟가락 등을 채워야합니다.) 그러나 절대로 스왑 상황에 빠지지 않도록하십시오.

그런 다음 Min, Max 및 Start 서버를 MaxClients로 설정하십시오. 전용 서버 환경에서 실제로 다른 것을 가질 필요는 없습니다.

그런 다음 거위 메모로 ab로 테스트하십시오.


답변

아파치 프로세스의 평균 크기를 얻어야합니다. 이 숫자와 RAM의 전체 크기를 사용하면 MaxClients 지시문을 계산할 수 있습니다. 이것을 기억하십시오 : “웹 서버는 절대 스왑 할 필요가 없습니다”( Apache Performance Tuning )

top 또는 htop으로 모니터링해도 괜찮지 만 ganglia 또는 munin과 같은 일부 모니터링 도구를 사용하여 서버의 모든 통계 (cpu, ram, disk i / o, apache requests, mysql slow query 등)를 더 잘 볼 필요가 있습니다. 병목 현상이 발생할 수 있습니다.


답변

나는 아파치의 벤치 마크 (ab) 툴을 가지고 노는 것을 추천한다. 값을 트래픽 흐름에 맞추고 평균로드 시간과 같은 응답 유형을 확인할 수 있습니다. 이 시점에서 설정을 시도하고 최적화하기 위해 설정을 가지고 놀 수 있습니다. ab를 사용하여 각 성능 조정에 대한 최적 성능을 처리 할 수 ​​있어야합니다.

실제로 설정에 대해 이야기하는 것이 현명하지는 않지만 RAM을 고려해야합니다. 설정과 함께 많은 RAM을 먹는 것처럼 들리기 때문에 RAM도 고려해야합니다. 데이터가없는 추측 일뿐입니다. htop은 리소스에 대한 시각적 인 정보를 제공합니다.

또한 부하 평균이 많이 말할 수 있습니다. 사용량이 20-30 % CPU의 총 코어 수보다 훨씬 높지만 서버가 실제로 얼마나 열심히 작동하는지 나타내는 또 다른 지표입니다.