Apache 성능 조정 및 최적화 방법

1. 하드웨어 및 운영 체제 최적화

a) RAM

특히 캐싱 중에 아파치 웹 서버 성능을 향상시키기에 충분한 RAM 공간이 있는지 확인하십시오. RAM이 가득 차면 요청이 스왑 공간으로 리디렉션되어 대기 시간이 늘어납니다. 이는 사용자가 요청을 다시로드해야하므로로드를 추가로 증가시킵니다. 이 문제를 해결하려면, 즉 스왑 공간으로 리디렉션되는 Apache 웹 서버에서 생성 된 하위 프로세스 수를 제한하려면 MaxRequestWorkers를 설정해야합니다. 이를 위해 최상의 가치를 얻으려면 다음 절차를 수행하십시오.


  1. top 명령을 사용하여 아파치 프로세스에서 사용되는 평균 RAM 크기를 확인하십시오.
  2. 사용 가능한 총 RAM 크기를 Apache에서 사용 된 평균 RAM 크기로 나누어 MaxRequestWorkers 수를 얻습니다.

Apache의 성능을 향상 시키려면 더 빠른 CPU, 더 빠른 네트워크 카드 및 더 빠른 디스크가 있어야합니다..

b) 쓰기 버퍼 크기

두 파일의 값을 증가시켜 쓰기 버퍼 크기를 늘리십시오.

/ proc / sys / net / core / wmem_max
/ proc / sys / net / core / wmem_default

c) 최대 열린 파일

아파치 웹 서버가 높은로드를 처리하는 경우 파일의 값을 증가시켜 허용되는 열린 파일의 최대 수를 늘리는 것이 좋습니다.

/ proc / sys / fs / file-max

그런 다음 명령을 실행하십시오.

$ ulimit -H -n 4096

2. 런타임 구성 조정

a) AllowOverride를 사용하여 .htaccess 비활성화

AllowOverride를 활성화하면 요청이있을 때마다 Apache가 .htaccess를 열려고합니다. 이것은 실제로 Apache 웹 서버의 성능을 떨어 뜨립니다. 이 문제를 해결하려면 아래와 같이 AllowOverride None 옵션을 사용하십시오.

DocumentRoot "/ www / var / html"

AllowOverride 없음

b) HostnameLookups를 사용하여 DNS 조회 비활성화

HostnameLookups가 활성화 된 경우 (즉, ON), DNS 조회를 수행 한 후 각 요청이 완료 될 때까지 대기 시간이 증가합니다. 이에 대한 두 가지 해결책이 있습니다.

  1. 이름이 확인 된 파일을 로깅하는 경우 프로덕션 서버에서 성능 저하를 방지하기 위해 다른 머신에서 로그 후 처리를 수행하십시오..
  2. 반드시 이름 확인이 필요하지 않은 경우 IP 주소를 사용하고 아래 옵션을 사용하여 DNS 조회를 모두 비활성화하십시오.

호스트 이름

3. 컴파일 타임 구성 최적화

a) 다중 처리 모듈 (MPM)

MPM은 아파치가 네트워크 포트에 바인딩하고 자식 프로세스와 스레드를 교대로 활용하여 요청을 수락하고 처리 할 수 ​​있도록 도와줍니다. MPM에는 3 가지 유형이 있으며 각각 다른 요구 사항에 적합합니다..

노동자: 각 스레드가 한 번에 하나의 연결을 처리하는 동안 각 스레드가 많은 여러 하위 프로세스를 활용합니다. 프리 포크보다 메모리 사용량이 적기 때문에 트래픽이 많은 서버에 적합합니다..

행사: 스레딩과 관련하여 작업자 MPM과 유사하지만 일부 처리를 지원 스레드로 전달하여 더 많은 요청을 동시에 제공 할 수 있습니다. 이는 다른 스레드에 할당 된 메모리를 확보하는 데 도움이됩니다. mod_php와 같은 스레드로부터 안전하지 않은 모듈과 함께 사용하기에 적합하지 않음.

프리 포크 : 각각 하나의 스레드로 여러 하위 프로세스를 활용합니다. 각 프로세스는 한 번에 하나의 연결을 처리합니다. 작업자보다 빠르지 만 더 많은 메모리를 사용합니다. mod_php와 같은 스레드로부터 안전하지 않은 모듈을 사용하는 응용 프로그램 디버깅에 적합.

MPM 버전을 확인하려면 명령을 실행하십시오.

$ sudo httpd -V

산출:

[linuxuser @ centos7-apache ~] $ sudo httpd -V
[sudo] linuxuser의 비밀번호 :
서버 버전 : Apache / 2.4.6 (CentOS)
서버 구축 : 2018 년 4 월 20 일 18:10:38
서버 모듈 매직 번호 : 20120211 : 24
서버로드 : APR 1.4.8, APR-UTIL 1.5.2
다음을 사용하여 컴파일 : APR 1.4.8, APR-UTIL 1.5.2
아키텍처 : 64 비트
서버 MPM : 프리 포크
스레드 : 아니오
분기 : 예 (가변 공정 수)
서버 컴파일….
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4 매핑 주소 사용)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT = 256
-D HTTPD_ROOT ="/ etc / httpd"
-D SUEXEC_BIN ="/ usr / sbin / suexec"
-D DEFAULT_PIDLOG ="/run/httpd/httpd.pid"
-D DEFAULT_SCOREBOARD ="logs / apache_runtime_status"
-D DEFAULT_ERRORLOG ="logs / error_log"
-D AP_TYPES_CONFIG_FILE ="conf / mime.types"
-D SERVER_CONFIG_FILE ="conf / httpd.conf"

현재 MPM은 프리 포크이며 변경하려면 다음과 같이 편집하십시오.

에 대한 센 토스 7

$ sudo vim /etc/httpd/conf.modules.d/00-mpm.conf

에 대한 우분투 16.04

$ sudo vim /etc/apache2/mods-available/.load

는 mpm_prefork, mpm_event 또는 mpm_worker입니다.

b) 불필요한 모듈 제거

웹 서버에 필요하지 않은 일부 모듈에는 mod_mime, mod_dir, mod_php, mod_perl, mod_ruby, e.t.c가 포함되지만 이에 국한되지는 않습니다. 이것은 웹 서버가 사용하는 RAM 메모리를 절약하는데 도움이됩니다.

센 토스 7, 모듈 비활성화 또는 언로드, 논평 < 로 시작하는 줄 로드 모듈 기본 설정 파일 또는 /etc/httpd/conf.modules.d/ 파일

우분투 16.04, 모듈을 비활성화하거나 언로드하려면 다음 명령을 실행하십시오.

$ sudo a2dismod 모듈 _ 이름

모듈을 활성화하려면

$ sudo a2enmod 모듈 _ 이름

그런 다음 아파치 서비스를 다시 시작하십시오..

최고의 3 가지 웹 호스팅 서비스를 확인하십시오

FastComet

시작 가격 :
$ 2.95


신뢰할 수 있음
9.7


가격
9.5


사용자 친화적
9.7


지원하다
9.7


풍모
9.6

리뷰 읽기

FastComet 방문

A2 호스팅

시작 가격 :
$ 3.92


신뢰할 수 있음
9.3


가격
9.0


사용자 친화적
9.3


지원하다
9.3


풍모
9.3

리뷰 읽기

A2 호스팅 방문

ChemiCloud

시작 가격 :
$ 2.76


신뢰할 수 있음
10


가격
9.9


사용자 친화적
9.9


지원하다
10


풍모
9.9

리뷰 읽기

ChemiCloud 방문

관련 사용법 기사

  • 데비안 8에서 Apache와 PHP-FPM을 설치하는 방법
    전문가
  • CentOS의 Apache 서버에 모듈을 추가하는 방법
    중급
  • 동일한 Ubuntu VPS 또는 전용 서버에서 Nginx와 Apache를 함께 구성하는 방법
    중급
  • 브라우저 캐싱을 관리하기 위해 include 메소드를 사용하여 Apache 2 서버를 설정하는 방법
    중급
  • CentOS 7 VPS 또는 전용 서버에서 Apache 웹 서버를 강화하는 방법
    전문가
Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me