>  기사  >  php教程  >  Apache 성능 최적화 (6)

Apache 성능 최적화 (6)

黄舟
黄舟원래의
2016-12-21 11:28:371428검색

추정 매개변수 예시(참고용, 반드시 우리 상황에 적합하지는 않음):
아파치의 기본 최대 사용자 수는 256명입니다. 이 구성은 아직 서버 메모리가 약인 시대에 매우 좋은 단점입니다. 256M 설정을 저장했지만 메모리 비용이 급격히 감소함에 따라 현재 대규모 사이트의 서버 메모리 구성은 일반적으로 당시보다 10배 이상 높습니다. 따라서 256개의 프로세스라는 하드 제한은 1G 메모리를 가진 시스템에 너무 낭비적이며 Apache의 소프트 상한 max_client는 HARD_SERVER_LIMIT로 제한됩니다. 따라서 WEB 서버 메모리가 256M보다 큰 경우 Apache의 HARD_SERVER_LIMIT를 늘려야 합니다. 개인적인 경험에 따르면: 2560은 이미 2G 메모리 미만인 대부분의 서버의 용량 계획을 충족할 수 있습니다

Apache + mod_php 서버: Apache 프로세스에는 일반적으로 4M 메모리가 필요합니다
따라서 1G 메모리가 있는 시스템에서는 위: apache_max_process_with_good_perfermance < (1g / 4m) * 2 = 500
apache_max_process = 500 * 1.5 = 750
따라서 서비스가 상대적으로 높은 효율성을 유지하기 위해 가능한 한 500개 프로세스 이하에서 실행되도록 애플리케이션을 계획하세요. Apache의 소프트 캡은 800으로 설정됩니다.
예 2:
apache + mod_resin 서버: apache 프로세스에는 일반적으로 2M 메모리가 필요합니다.
2G 메모리가 있는 시스템:
apache_max_process_with_good_perfermance < (2g / 2m ) * 2 = 2000
apache_max_process = 2000 * 1.5 = 3000
--prefix=/another_driver/apache/: 하드 디스크는 시스템 수명이 가장 짧은 장치인 경우가 많기 때문에 다른 드라이버 장치에 Apache 서비스를 설치하는 것이 좋습니다. : 서비스 데이터와 운영 체제의 완전한 분리는 데이터의 접근 속도를 향상시킬 뿐만 아니라, 더 중요한 것은 시스템 업그레이드, 애플리케이션 백업 및 복구 프로세스를 크게 촉진시킵니다.
--shared-module=max: 이 동적 로딩 방법을 사용하여 하위 모듈을 로드하면 성능이 5% 저하되지만 표준화된 설치 및 유지 관리의 이점은 이보다 훨씬 큽니다. 우리 애플리케이션은 상대적으로 고정되어 있으므로 정적 사용을 권장합니다.
grep -v "#" httpd.conf.default >httpd.conf
#최대 서비스 프로세스 수: 서비스 용량 예측에 따라 설정
MaxClients 256 => 800
기타 Apache 성능 최적화 구성 :
HostnameLookups off
On으로 설정하면 각 요청에 대해 DNS 쿼리가 필요하므로 지연이 발생합니다.
옵션 FollowSymLinks
최고의 성능을 얻고 심볼릭 링크 보호를 포기하려면 필요할 때마다 FollowSymLinks를 설정하고 SymLinksIfOwnerMatch를 사용하여 포기할 수 있습니다.
AllowOverride None
URL 공간이 재정의를 허용하는 경우(일반적으로 다음을 사용합니다. .htaccess 파일), Apache는 각 파일 이름 구성 요소에 대해 .htaccess를 열려고 시도합니다.
DirectoryIndex index.cgi index.pl index.shtml index.html
가장 일반적으로 사용되는 항목을 먼저 사용하지 마세요. 와일드카드를 사용하고 전체 목록을 사용하세요.
MMAP 활성화
서버 측 포함을 처리할 때와 같이 Apache 2.0이 전송되는 파일의 내용을 검색해야 하는 경우, OS가 mmap(2) 형식을 지원하는 경우, 그런 다음 이 파일에 대해 메모리 매핑이 수행됩니다.
일부 플랫폼에서는 메모리 매핑이 성능을 향상시킬 수 있지만 어떤 경우에는 메모리 매핑이 성능을 저하시키고 심지어 httpd의 안정성에 영향을 미칠 수도 있습니다. 우리 애플리케이션의 경우 파일 전송을 위해 메모리 매핑을 끄는 것이 더 적절합니다.
mod_status 및 ExtendedStatus Off
Apache가 컴파일 시 mod_status를 포함하고 ExtendedStatus On이 런타임에 설정된 경우 Apache는 각 요청에 대해(또는 운영 체제에 따라) gettimeofday(2)를 두 번 호출하여 times(2)를 호출합니다. 및 (1.3 이전) 상태 기록에 타임스탬프를 적용하기 위한 몇 가지 추가 time(2) 호출이 있습니다. 최상의 성능을 얻으려면 ExtendedStatus를 끄면 됩니다(기본값이기도 함).
TCP 연결 차단 매개변수 조정
/etc/sysctl.conf에 추가:
net.inet.tcp .msl=2000
net.inet.tcp.always_keepalive=0

위 설정은 기본적으로 Keep Alive 모드에서 TCP 연결이 설정되는 것을 방지하고 OS를 소비하는 많은 수의 유휴 연결을 방지합니다. 🎜> 리소스; 추가로 TCP TIME_WAIT 대기 시간도 60초에서 4초로 단축되었습니다.
UFS dirhash에서 허용하는 메모리 사용량을 조정합니다.
vfs.ufs.dirhash_maxmem=67108864 (이 설정은 5.3p14에 자동으로 포함됩니다.)

이 설정은 OS 기본값을 32배 증가시킵니다.
Apache 구성에서 KeepAlive 비활성화:
/usr/local/etc/apache2/httpd.conf를 편집하고 서버 부하가 심한 경우
KeepAlive On

KeepAlive Off
로 변경합니다. , 위의 설정은 httpd에 대한 동시 연결 수를 약 2200에서 400
미만으로 줄입니다. 그리고 응답 시간을 효과적으로 개선합니다. 위의 설정은 이전(약 3주)에 일부 머신에 적용되었습니다.
기본적으로 이러한 설정은 사용자가 체감할 수 있는 부작용을 일으키지 않으며 서비스의 응답 시간입니다. 따라서 모든 온라인 시스템에서는 위의 설정을 적용하는 것이 좋습니다.
특정 기술 세부사항
현재 온라인 FreeBSD 5.3 버전(패치 수준에 관계 없음)은 SINAMAIL 커널에 통합되어 있습니다.
ACCF_HTTP의 역할은 HTTP 요청이 완료된 후 클라이언트에서 애플리케이션으로 전송함으로써 httpd가 느린 클라이언트 네트워크로 인해 조기에 연결을 기다리기 시작하여 발생하는
리소스 소비를 줄이는 것입니다.
KeepAlive를 비활성화하면 클라이언트가 여러 리소스를 요청할 때 동시 요청을 할 가능성이 더 커집니다. 이에
부터 링크의 패킷 손실 등의 문제로 인한 지연이 다른 리소스 다운로드에 미치는 영향이 약화될 예정이다.
TCP 조각화 시간 제한을 단축하면 연결이 종료될 때까지 기다리는 시간이 단축되고 설정된 연결이 더욱 안정적이 됩니다.
dirhash의 기본 최대 메모리는 2MB입니다. 현재 프로덕션 시스템에서 얻는 실제 사용량은 일반적으로 약 16-20MB
입니다. 이를 확장하면 동일한 디렉터리에 있는 파일에 대한 액세스 성능이 향상됩니다.

간단한 성능 테스트: (최상의 최적화 매개변수를 찾기 위해 다양한 구성 매개변수를 별도로 테스트하는 것이 좋습니다.)
Apache 자체 ab를 사용하여 테스트해야 하는 경우에는 .
[yangbin1@vHost-RH9 apache]$ ./bin/ab -n 10000 -c 100 http://10.210.128.189:7981/
ApacheBench 버전 2.0.40-dev <$Revision입니다. : 1.121.2.8 $> apache-2.0
저작권(c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
저작권(c) 1998-2002 The Apache Software Foundation, http://www.apache.org/
벤치마킹 10.210.128.189(인내심을 가지세요)
요청 1000개 완료
요청 2000개 완료
요청 3000개 완료
요청 4000개 완료
요청 5000개 완료 요청
요청 6000개 완료
요청 7000개 완료
요청 8000개 완료
요청 9000개 완료
요청 10000개 완료

서버 소프트웨어: Apache/2.0.49
서버 호스트 이름 ) 테스트 소요 시간: 20.756253초
완료 요청: 10000
실패한 요청: 0
쓰기 오류: 0
총 전송량: 19192048바이트
전송된 HTML: 14653184바이트
당 요청 수 초: 481.78[#/초](평균)
요청당 시간: 207.563[ms](평균)
요청당 시간: 2.076[ms](모든 동시 요청에 대한 평균)
전송 속도: 902.96 [KB/초] 수신
연결 시간(ms)
최소 평균[+/-sd] 중앙값 최대
연결: 0 78 60.7 99 554
처리: 20 125 57.8 114 1149
대기: 5 111 53.2 104 869
총계: 47 204 84.4 214 1303
특정 시간(ms) 내에 처리된 요청 비율
50% 214
66% 218
75% 220
80% 223
90% 264
95% 302
98% 447
99% 530
100% 1303(최장 요청)
테스트 결과 분석: 아직 없음 .

위 내용은 아파치 성능 최적화(6) 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.