Ubuntu 14.04는 mpm_prefork 모듈을 통해 실행되는 PHP와 함께 Apache 2를 사용 하며, 편집 가능한 파일은 /etc/apache2/mods-enabled/mpm_prefork.conf에 있습니다. 또한 Apache 2.4부터 MaxClients의 이름이 MaxRequestWorkers 로 바뀌 었 으므로 MaxClient에 관한 모든 문서를 MaxRequestWorkers로 전환해야합니다.
다음 명령을 사용하여 Apache 웹 서비스를 일시적으로 중지하십시오.
sudo 서비스 아파치 2 중지
- 5 초 동안 기다린 후 다음 명령을 실행하여 사용 가능한 서버에 사용 가능한 가상 메모리의 양을 찾으십시오.
sudo free -ht
Mem : 행을 읽고 비어있는 열을보십시오. 필자는 일반적으로 더 강력한 서버 (2GB 이상) 또는 2GB를 가벼운 서버에서 공제하고 싶지만 Apache에 전용 할 수있는 RAM의 양으로 이것을 고려하십시오. 따라서 무료 열에 13GB의 여유 공간이 있다고 표시되면 Apache 11GB를 제공하는 것이 좋습니다. 이것이 기준입니다. 3 일 동안 로그에서 3 번과 같이 로그에 데이터베이스 문제가 발생하여 더 많은 메모리가 필요한 경우 11GB 대신 10GB 만 가지고 있다고 생각할 수 있습니다 (이 경우 ). Apache 로그에서 서버에 더 많은 MaxRequestWorkers가 필요하다는 것을 알게되면 아래에서 해결해야 할 별도의 문제입니다.
- Apache 웹 서버를 시작하십시오.
sudo 서비스 아파치 2 시작
10 개의 브라우저 탭을 열고 웹 사이트에서 길거나 느리게로드되는 일부 페이지에 연결 한 후 각 탭에서 3-4 번 새로 고칩니다.
그렇게 한 후 이제 다음 명령을 빠르게 실행하십시오.
sudo ps -ylC apache2 | awk '{x + = $ 8; y + = 1} END {print "아파치 메모리 사용량 (MB) :"x / 1024; "평균 프로세스 크기 (MB) :"x / ((y-1) * 1024)} '인쇄
5 배 빠르게 실행하십시오.
평균 프로세스 크기 값을보고 해당 값을 실행 한 5 회 중 평균 값을 찾으십시오.
이제 다음 수학을 수행하고 모든 숫자가 MB 값이되도록 필요에 따라 GB를 MB로 변환하십시오. 따라서 필요한 방법에 따라 1024를 곱하거나 1024로 나눕니다.
MaxRequestWorkers = 기준선 없음 (버퍼 공간 사용) / 평균 프로세스 크기
예를 들어, 14GB 서버가 있지만 Apache가 중지되면 서버가 유휴 상태에서 1GB RAM을 사용하는 것으로 나타났습니다. 그런 다음 필요한 경우 OS의 추가 버퍼 공간에 다른 1GB를 제공합니다. 즉, 12GB의 Baseline Free가 필요합니다. 이제 GB에서 MB로 변환해야하므로 12 x 1024를 곱하고 12288을 얻습니다. 12288MB는 기본 무료 값입니다. 필자의 경우 평균 프로세스 크기가 21MB라는 것을 알았습니다. 따라서 12288/21을 취하고 약 585를 얻습니다. 이제 sysops가이 값을 반올림하여 580을 얻었습니다.
- /etc/apache2/mods-enabled/mpm_prefork.conf 파일을 편집하고 다음 기본값으로 설정하여 XXX를 MaxRequestWorkers 계산으로 바꾸십시오.
`<IfModule mpm_prefork_module>`
StartServers 2
MinSpareServers 2
MaxSpareServers 5
MaxRequestWorkers XXX
ServerLimit XXX
MaxConnectionsPerChild 0
</IfModule>
ServerLimit 매개 변수가 표시되지 않을 수 있습니다. 그것을 추가하십시오. 이 매개 변수는 존재하지 않는 경우 기본값은 256이지만 MaxRequestWorkers와 같은 값이어야합니다. 그렇지 않으면 오류가 발생합니다.
Apache 구성의 또 다른 중요한 요소는 Timeout 변수가있는 /etc/apache2/apache2.conf 파일이며 초 단위로 측정됩니다. 시간이 초과되기 전에 서버에서 보내거나받을 수있는 시간입니다. 예를 들어 사람들이 CSV 또는 다른 큰 파일을 업로드하거나 다운로드 할 수있는 웹 사이트가있는 경우와 같이 파일 업로드 또는 파일 다운로드를 염두에 두어야합니다. 또한 사용량이 많은 데이터베이스 서버와 페이지 시간 초과 전에 시간을 제공해야하는 위치를 염두에 두어야합니다. Timeout 변수를 작게 만들수록 웹 서버는 새 연결을 더 많이 사용할 수 있습니다. 그러나이 값을 너무 낮게 설정하면 브라우저 세션 기반 쿠키가 아닌 PHP 세션 변수에 혼란을 초래할 수 있습니다. 예를 들어 300 (5 분) 값은 브라우저 세션 쿠키 대신 웹 앱 워크 플로우에 PHP 세션 변수를 사용하는 웹 서버에 적합 할 수 있습니다. 값 45는 정적 광고 랜딩 페이지 이상을 제공하는 웹 서버에는 좋지만 PHP 세션 변수를 많이 사용해야하는 서버에는 끔찍합니다. 따라서이 파일에서 Timeout 매개 변수를 필요한 양으로 편집하십시오. 값이 너무 낮은 지 확인하려면 모든 웹 페이지에서 약간의 테스트가 필요할 수 있습니다. 그러나 큰 파일 업로드 나 큰 파일 다운로드에서 문제가 발생하지 않는 한 300보다 높게 설정하지 않는 것이 좋습니다. 그러나 PHP 세션 변수를 많이 사용해야하는 서버에는 끔찍할 것입니다. 따라서이 파일에서 Timeout 매개 변수를 필요한 양으로 편집하십시오. 값이 너무 낮은 지 확인하려면 모든 웹 페이지에서 약간의 테스트가 필요할 수 있습니다. 그러나 큰 파일 업로드 나 큰 파일 다운로드에서 문제가 발생하지 않는 한 300보다 높게 설정하지 않는 것이 좋습니다. 그러나 PHP 세션 변수를 많이 사용해야하는 서버에는 끔찍할 것입니다. 따라서이 파일에서 Timeout 매개 변수를 필요한 양으로 편집하십시오. 값이 너무 낮은 지 확인하려면 모든 웹 페이지에서 약간의 테스트가 필요할 수 있습니다. 그러나 큰 파일 업로드 나 큰 파일 다운로드에서 문제가 발생하지 않는 한 300보다 높게 설정하지 않는 것이 좋습니다.
이제 Apache 웹 서비스를 다시 시작하십시오. 만약 당신이 무언가 잘못했다면, 아파치는 다시 시작할 때 그것에 대해 알려줄 것이고, 그것을 바로 잡을 수 있습니다.
sudo 서비스 아파치 2 재시작
- 이제 이전에했던 10 탭 브라우저 트릭을 반복하고 Apache 웹 서버 오류 로그에서 Apache 구성 오류가 발생하는지 확인하십시오.
sudo tail -f /var/log/apache2/error.log
... 원한다면 CTRL + C를 누르십시오.
MaxRequestWorkers가 필요하고 최근에 웹 서버를 다시 시작한 이후에 불만이 있는지 확인하십시오. 최적의 MaxRequestWorkers 설정으로도 웹 사이트 나 웹 응용 프로그램에 더 많은 화력이 필요할 것입니다. 다음 옵션을 고려하십시오.
- 대용량 파일 다운로드, 이미지 및 스크립트에 CDN 사용
- CloudFlare 또는 기타와 같은 캐싱 서비스 사용
- 웹 사이트 또는 웹 응용 프로그램 전략을 다시 실행하여로드 밸런서 뒤에 하나의 "웹 응용 프로그램"역할을하는 여러 웹 서버를 사용하십시오.
- 서버에 RAM을 추가하여이 계산을 다시 수행합니다.
- 이제 Apache 서버가 조정되었으므로 일종의 기준선이 조정되었습니다. 2-3 주 동안이를 확인하고 Apache 오류 로그에서 MaxRequestWorker 문제를 찾아야합니다. 이를 통해 최적화에 대한 결정을 내릴 수 있습니다 (10 단계 참조). Ubuntu에 apt로 Munin을 설치하고 시간이 지남에 따라 Apache 성능을보고 웹 서버가 처리하는 트래픽 양에 대해 무엇인가를 결정하기 전에 성장에 대한 아이디어를 그릴 수 있습니다.