>백엔드 개발 >PHP 튜토리얼 >웹사이트 성능 향상의 핵심: PHP-FPM 최적화 실무 가이드

웹사이트 성능 향상의 핵심: PHP-FPM 최적화 실무 가이드

王林
王林원래의
2023-10-05 09:28:411114검색

웹사이트 성능 향상의 핵심: PHP-FPM 최적화 실무 가이드

웹사이트 성능 향상의 핵심: PHP-FPM 최적화 실용 가이드

인터넷의 급속한 발전과 함께 웹사이트의 역할이 점점 더 중요해지고 있습니다. 웹사이트 운영자에게 웹사이트 성능을 개선하는 것은 사용자 경험을 향상시킬 뿐만 아니라 검색 엔진 순위를 높이는 데에도 중요합니다. PHP-FPM(FastCGI 프로세스 관리자)은 PHP 실행을 위한 프로세스 관리자로서 웹 사이트 성능을 향상시키는 데 중요한 역할을 합니다. 이 기사에서는 특정 코드 예제를 포함하여 PHP-FPM 최적화에 대한 실용적인 가이드를 제공합니다.

1. PHP-FPM 설치 및 구성

먼저 서버에 PHP가 설치되어 있는지 확인해야 합니다. 다음 명령어로 확인할 수 있습니다.

php -v

PHP가 설치되지 않은 경우 다음 명령어를 사용하여 설치하세요(CentOS를 예로 들어).

yum install php

설치가 완료된 후 php를 수정해야 합니다. ini 파일을 사용하여 PHP-FPM 지원을 활성화합니다. 다음 두 줄의 코드를 찾아 수정합니다.

cgi.fix_pathinfo=0
; FastCGI dynamic process spawning
; Set to 0 if you're not having permission errors when running PHP as a CGI.
; http://php.net/cgi.fix-pathinfo

첫 번째 코드 줄을 다음과 같이 수정합니다.

cgi.fix_pathinfo=1

두 번째 코드 줄을 다음으로 수정합니다.

;cgi.fix_pathinfo=0

수정 사항을 저장한 후 PHP-FPM 서비스를 다시 시작하여 수정이 효과적입니다.

service php-fpm restart

2. PHP-FPM의 구성 매개변수를 조정하세요

PHP-FPM을 최적화하기 전에 PHP-FPM의 몇 가지 중요한 매개변수를 이해해야 합니다.

  • pm.max_children: 최대 프로세스 수를 지정합니다. PHP-FPM이 생성할 수 있는 최대 PHP 프로세스 수입니다. 이 값을 초과하면 새 연결이 대기열에 추가됩니다.
  • pm.start_servers: 시작 시 생성되는 PHP 프로세스 수를 지정합니다.
  • pm.min_spare_servers: PHP-FPM이 유지해야 하는 유휴 프로세스의 최소 수를 지정합니다.
  • pm.max_spare_servers: PHP-FPM이 유지해야 하는 최대 유휴 프로세스 수를 지정합니다.
  • pm.max_requests: 각 PHP 프로세스에서 처리하는 최대 요청 수를 지정합니다. 이 값을 초과하면 프로세스가 다시 시작됩니다.

서버 구성과 웹사이트 트래픽에 따라 이러한 매개변수를 적절하게 조정하여 PHP-FPM의 성능을 향상시킬 수 있습니다. 예를 들어 서버 구성이 낮은 경우 pm.max_children을 20과 같은 더 작은 값으로 설정할 수 있습니다. 웹 사이트 트래픽이 높지 않은 경우 pm.min_spare_servers 및 pm.max_spare_servers를 5와 같이 더 작은 값으로 설정할 수 있습니다.

php-fpm.conf 파일을 편집하여 이러한 매개변수를 수정할 수 있습니다.

vi /etc/php-fpm.conf

수정할 다음 코드 줄을 찾으세요.

pm.max_children = 20
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 10
pm.max_requests = 500

수정 사항을 저장한 후 PHP-FPM 서비스를 다시 시작하여 수정 사항을 적용하세요.

service php-fpm restart

3. PHP의 OPcache 확장 활성화

OPcache는 PHP 버전 5.5 이후에 도입된 가속기입니다. 컴파일된 PHP 스크립트를 메모리에 캐시하여 반복 컴파일 시간을 줄일 수 있습니다. 다음 단계에 따라 OPcache 확장을 활성화할 수 있습니다.

  1. php.ini 파일을 엽니다.
vi /etc/php.ini
  1. 다음 코드를 찾습니다.
;zend_extension = <path_to_opcache.so>
  1. 앞의 ";"을 제거하고 "
  2. 변경 사항을 저장한 후 PHP-FPM 서비스를 다시 시작하여 OPcache를 적용하세요.
service php-fpm restart

4. PHP-FPM의 느린 로그 기능을 켜세요

PHP-FPM의 느린 로그 기능은 실행 시간이 지정된 임계값을 초과하는 요청을 후속 분석 및 최적화를 위해 로그 파일에 기록할 수 있습니다. 다음 단계를 통해 느린 로그 기능을 켤 수 있습니다.

  1. php-fpm.conf 파일 열기:
vi /etc/php-fpm.conf
  1. 다음 코드 찾기:
;slowlog = /var/log/php-fpm/www-slow.log
;request_slowlog_timeout = 0
  1. 이전 ";" 수정 "를 필수 임계값(초)으로 설정합니다. 예를 들어, 1로 수정하면 실행하는 데 1초 이상 걸리는 요청이 기록된다는 의미입니다.
  2. 변경 사항을 저장한 후 PHP-FPM 서비스를 다시 시작하면 느린 로그 기능이 적용됩니다.
service php-fpm restart

5. Nginx와 같은 역방향 프록시 서버를 사용하세요.

Nginx와 같은 역방향 프록시 서버를 사용하면 처리를 위해 정적 리소스 요청을 Nginx로 전달할 수 있으므로 PHP-FPM의 부하가 줄어들고 웹사이트 성능이 향상됩니다.

Nginx 구성 파일에서 다음 코드를 통해 정적 리소스에 대한 요청을 Nginx로 전달할 수 있습니다.

location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {
    proxy_pass http://yourdomain.com;
    proxy_set_header Host $host;
}

위 코드는 jpg, jpeg, png, gif, ico, css, js 및 기타 접미사에 대한 요청을 http로 전달합니다. //yourdomain.com에서 처리되었습니다.

6. 캐싱 메커니즘 사용

웹사이트의 비즈니스 로직에서 캐싱 메커니즘은 데이터베이스 액세스와 동적 페이지 생성을 줄여 웹사이트 성능을 향상시키는 데 사용될 수 있습니다. 이는 Redis 및 Memcached와 같은 캐싱 기술을 사용하여 달성할 수 있습니다.

Redis 캐시는 다음 코드 예시를 통해 사용할 수 있습니다.

$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$key = 'user_info_' . $user_id;
if ($redis->exists($key)) {
    $user_info = $redis->get($key);
} else {
    $user_info = getUserInfoFromDatabase($user_id);
    $redis->setex($key, 3600, $user_info);
}

위 코드는 먼저 캐시에 사용자 정보가 있는지 확인하고, 없으면 캐시에서 직접 가져옵니다. 데이터베이스에서 사용자 정보를 가져와 캐시에 저장하고 만료 시간을 3600초로 설정합니다.

요약:

PHP-FPM을 최적화함으로써 웹사이트의 성능을 향상시키고 사용자 경험을 향상시킬 수 있습니다. 이 문서에서는 PHP-FPM 최적화에 대한 실용적인 가이드를 제공하고 참조할 수 있는 특정 코드 예제를 제공합니다. 실제 애플리케이션에서는 최상의 성능을 달성하기 위해 특정 요구 사항에 따라 조정 및 최적화할 수도 있습니다.

위 내용은 웹사이트 성능 향상의 핵심: PHP-FPM 최적화 실무 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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