최대 처리량을위한 PHP-FPM 구성 최적화
대부분의 경우 동적 프로세스 관리자를 사용하고, 정상적인 트래픽을 위해 정적이며, 높은 처리량을 위해 온 디맨드를 피하십시오. 2. PM.Max_Children을 기준으로 RAM을 기준으로 평균 PHP 프로세스 메모리로 나뉘어 교환을 방지하기 위해 헤드 룸을 남겨 둡니다. 3. 직원을 재활용하고 메모리 누출을 방지하도록 pm.max_requests를 구성하고, 요청 _terminate_timeout을 설정하여 장기 실행 요청을 죽이고 Slowlog가 병목 현상을 추적 할 수 있도록합니다. 4. 낮은 I/O 오버 헤드에 Unix 소켓을 사용하고 Listen.backLog를 조정하여 웹 서버 설정에 맞게 RLIMIT_FILES를 늘리십시오. 5. HTOP 또는 Grafana와 같은 도구를 사용하여 FPM 상태, 업스트림 응답 시간 및 시스템 메트릭을 지속적으로 모니터링합니다. 또한, 적절한 설정으로 Opcache를 활성화하여 스크립트 구문 분석 오버 헤드를 줄이고 성능을 크게 향상시킵니다.
최대 처리량을 위해 PHP-FPM 최적화는 모든 설정을 최대로 크랭크하는 것이 아닙니다. 응용 프로그램의 동작, 서버 리소스 및 트래픽 패턴과 구성을 정렬하는 것입니다. 조정되지 않은 PHP-FPM은 응답 시간이 느려지거나 메모리 사용량이 높거나 502 개의로드 오류로 이어질 수 있습니다. 다음은 최대한 활용하는 방법입니다.

1. 올바른 프로세스 관리자 (PM) 선택
PHP-FPM은 static
, dynamic
및 ondemand
세 프로세스 관리자를 지원합니다. 귀하의 선택은 성능 및 자원 사용에 직접적인 영향을 미칩니다.
-
dynamic
(대부분의 경우 권장)
성능과 기억의 균형. 수요에 따라 성장하거나 축소 할 수있는 아동 프로세스 풀을 유지합니다.PM = 동적 pm.max_children = 50 pm.start_servers = 10 pm.min_spare_servers = 5 pm.max_spare_servers = 15
static
모든 아동 과정은 스타트 업에서 생성됩니다. 메모리를 감당할 수있을 때 높고 일관된 트래픽에 가장 적합합니다.PM = 정적 pm.max_children = 30
ondemand
요청이 도착했을 때만 어린이를 낳습니다. 트래픽 스파이크 중에 메모리를 저장하지만 대기 시간을 증가시킵니다. 고 처리량 시나리오에는 이상적이지 않습니다.
? 경험 규칙 :
dynamic
사용을 사용하여 예측 가능하고 꾸준한 트래픽이 있으며 프로세스 관리 오버 헤드를 최소화하려고합니다.
2. 사용 가능한 메모리를 기반으로 pm.max_children
설정하십시오
이것은 가장 중요한 설정 입니다. 너무 높음 = 메모리 소진. 너무 낮음 = 요청 대기입니다.
추정 Max_Children :
Max_Children = PHP-FPM 전용 총 RAM / PHP 프로세스 당 평균 메모리
예를 들어:
- 2GB RAM을 PHP-FPM에 할당합니다
- 평균 PHP 프로세스는 ~ 64MB를 사용합니다
-
2048 MB / 64 MB = 32
따라서 pm.max_children = 32
설정하십시오 (시스템 오버 헤드를 위해 헤드 룸을 남겨 두십시오).
다음을 사용하여 프로세스 당 메모리를 확인할 수 있습니다.
ps -no -headers -o "rss, cmd"-c php -fpm | awk '{sum = $ 1} end {print int (sum/nr/1024) "mb"}'
⚠️ 과잉 헌신 메모리를 피하십시오 - 교환은 성능을 죽입니다.
3. 요청 처리 및 시간 초과 설정을 조정하십시오
장기 실행 또는 고정 요청은 작업자 풀을 소진 할 수 있습니다.
pm.max_requests = 500; 500 건의 요청 후 근로자를 다시 시작합니다 (메모리 누출 방지에 도움) pm.process_idle_timeout = 10s; 'ondemand'만 request_terminate_timeout = 30s; 30 초 이상의 요청을 죽입니다 request_slowlog_timeout = 5s; 느린 요청을 로그 (slowlog와 쌍) catch_workers_output = 예; stdout/stderr를 캡처합니다
-
pm.max_requests
장기 실행 스크립트 (예 : 레거시 코드)에서 메모리 누출을 완화하는 데 도움이됩니다. -
request_terminate_timeout
교수록 요청이 작업자 차단을 방지하지 못하게합니다. -
slowlog
사용하여 병목 현상을 식별하십시오.slowlog = /var/log/php-fpm-slow.log
4. I/O 및 동시성 최적화
PHP-FPM은 병목 현상이되지 않을 때 가장 잘 작동합니다. 빠른 웹 서버 (예 : nginx)와 페어링하고 요청 흐름을 최적화하십시오.
TCP 대신 소켓 연결을 사용합니다 (동일한 호스트 인 경우) :
듣기 = /run/php/php8.1-fpmm.sock 듣는 사람 = www-data listen.group = www-data 듣기. 모드 = 0660
UNIX 소켓은
127.0.0.1:9000
보다 오버 헤드가 낮습니다.연결 거부가 표시되면
listen.backlog
조정 :listen.backlog = 511
이것을 웹 서버의
backlog
에 가깝게 설정하십시오 (예 : nginxlisten ... backlog=511
).파일 디스크립터 제한을 누르면
rlimit_files
늘리십시오.rlimit_files = 65535
5. 모니터링하고 반복하십시오
튜닝은 일회성이 아닙니다. 주요 메트릭 모니터 :
FPM 상태 페이지 (풀 구성 활성화) :
pm.status_path = /status
활성/유휴 프로세스, 대기열 길이 등을보기 위해 웹 서버를 통해 액세스하십시오.
Nginx 업스트림 응답 시간 - 대기 대기 시간은 FPM 포화를 나타낼 수 있습니다.
시스템 메트릭 : CPU, 메모리, 스왑 및로드 평균.
더 깊은 통찰력을 얻으려면 htop
, sysdig
또는 PROMETHEUS GRAFANA와 같은 도구를 사용하십시오.
보너스 : Opcache를 사용하십시오
PHP-FPM은 프로세스 관리를 처리하지만 OPCache는 스크립트 구문 분석 오버 헤드를 크게 줄입니다.
opcache.enable = 1 opcache.memory_consumption = 256 opcache.max_accelerated_files = 20000 opcache.validate_timestamps = 0; 생산 비활성화 (배포를 위해 다시 활성화) opcache.fast_shutdown = 1
Opcache가 없으면 완벽하게 조정 된 FPM조차도 성능이 저조됩니다.
기본적으로 PHP-FPM 최적화는 다음과 같습니다. max_children
과 메모리와 일치시키고 올바른 프로세스 관리자를 선택하고 고착 요청을 방지하며 I/O 오버 헤드를 줄입니다. Opcache 및 모니터링과 결합하면 PHP 스택에서 가장 많은 처리량을 짜냅니다.
위 내용은 최대 처리량을위한 PHP-FPM 구성 최적화의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undress AI Tool
무료로 이미지를 벗다

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

작업자 프로세스 수, 연결 풀 크기, GZIP 압축 및 HTTP/2 프로토콜을 활성화하고 캐시 및로드 밸런싱을 사용하여 NGINX 성능 튜닝을 달성 할 수 있습니다. 1. 작업자 프로세스 수 및 연결 풀 크기 조정 : Worker_ProcessesAuto; 이벤트 {worker_connections1024;}. 2. GZIP 압축 및 HTTP/2 프로토콜 활성화 : http {gzipon; server {listen443sslhttp2;}}. 3. 캐시 최적화 사용 : http {proxy_cache_path/path/to/cachelevels = 1 : 2k

Apache 성능을 향상시키는 방법 : 1. Keepalive 설정 조정, 2. 다중 프로세스/스레드 매개 변수 최적화, 3. 압축에 Mod_deflate 사용, 4. 캐시 및로드 밸런싱 구현, 5. 로깅 최적화. 이러한 전략을 통해 Apache 서버의 응답 속도 및 동시 처리 기능을 크게 향상시킬 수 있습니다.

C++ 클래스 디자인의 성능을 향상시키기 위한 팁에는 불필요한 복사본 방지, 데이터 레이아웃 최적화 및 constexpr 사용이 포함됩니다. 실제 사례: 개체 풀을 사용하여 개체 생성 및 소멸을 최적화합니다.

XML 및 RSS 데이터를 처리 할 때 다음 단계를 통해 성능을 최적화 할 수 있습니다. 1) LXML과 같은 효율적인 파서를 사용하여 구문 분석 속도를 향상시킵니다. 2) 색소폰 파서를 사용하여 메모리 사용을 줄입니다. 3) XPath 표현식을 사용하여 데이터 추출 효율을 향상시킵니다. 4) 다중 프로세스 병렬 처리를 구현하여 처리 속도를 향상시킵니다.

NGINX와 PHP-FPM의 효율적인 조합의 핵심은 NGINX가 PHP 요청을 PHP-FPM에 전달한다는 것입니다. 1.NGINX 구성에는 위치 블록을 포함하고, 처리에 대한 규칙을 지정하고, PHP-FPM 청취 주소 (일반적으로 127.0.0.1:9000)를 가리 키도록 FASTCGI_PASS를 설정해야합니다. 2. 고급 구성에는 Nginx로드 밸런싱, 캐시 정적 자원 및 보안 구성이 포함됩니다. 3. 자주 묻는 질문에는 PHP-FPM 스타트 업 실패, NGINX는 PHP-FPM 및 502 오류에 연결할 수 없으며 구성 및 PHP-FPM 프로세스를 확인해야합니다. 4. PHP-FPM 프로세스 수를 조정하고 Opcache를 활성화하고 활성화하여 성능 최적화를 조정할 수 있습니다.

OPCache를 활성화하여 컴파일된 코드를 캐시함으로써 PHP 성능을 향상시킵니다. 자주 사용되는 데이터를 저장하려면 Memcached와 같은 캐싱 프레임워크를 사용하세요. 데이터베이스 쿼리를 줄입니다(예: 쿼리 결과를 캐싱하여). 코드를 최적화합니다(예: 인라인 함수 사용). XHProf와 같은 성능 분석 도구를 활용하여 성능 병목 현상을 식별합니다.

YII2.0 응용 프로그램 성능을 향상시키기위한 전략은 다음과 같습니다. 1. 데이터베이스 쿼리 최적화, QueryBuilder 및 ActiveRecord를 사용하여 특정 필드 및 제한 결과 세트를 선택합니다. 2. 캐싱 전략, 데이터의 합리적인 사용, 쿼리 및 페이지 캐시; 3. 코드 레벨 최적화, 객체 생성 감소 및 효율적인 알고리즘 사용. 이러한 방법을 통해 YII2.0 응용 프로그램의 성능을 크게 향상시킬 수 있습니다.

C에서 데이터 구조의 레이아웃 최적화는 다음 단계를 통해 달성 할 수 있습니다. 1. 메모리 정렬 조정 및 크기별로 정렬 구조 부재와 같은 패딩을 줄입니다. 2. 캐시 친근감을 향상시키고 자주 방문한 회원을 함께 모으십시오. 3. 구조물 멤버 분류를 최적화하고 가장 많이 방문한 멤버를 앞에 놓습니다. 4. 크로스 캐시 라인 액세스를 줄이기 위해 캐시 라인의 배수가되도록 구조를 조정하십시오. 이러한 방법을 통해 프로그램 성능 및 메모리 사용량을 크게 향상시킬 수 있습니다.
