키 포인트
적절한 메모리 서버의 경우, PHP-FPM의 설정은 높은 처리량과 낮은 대기 시간을 제공합니다. 이 설정을 통해 PHP-FPM 프로세스는 항상 최대 용량을 유지하여 새로운 프로세스를 생성 할 필요없이 트래픽 피크에 대한 빠른 응답을 가능하게합니다.
메모리 또는 캐시 응력 문제를 피하려면
를 사용하는 것은 신중한 조정이 필요합니다. CPU 성능에 영향을 미치지 않고 서버가 처리 할 수있는 최대 PHP-FPM 프로세스 수에 따라 설정해야합니다. -
PHP-FPM 풀이 여러 개 또는 메모리가 낮은 서버의 경우 또는
pm static
가 더 적합 할 수 있습니다. 이러한 설정은 현재 부하에 따라 하위 프로세스 수를 조정하여 메모리를 저장할 수 있지만 트래픽 변동이 발생할 때 오버 헤드 문제를 일으킬 수도 있습니다.
PHP-FPM 구성의 정기 모니터링 및 튜닝은 선택한 설정에 관계없이 최적의 성능에 필수적입니다. PHP-FPM 프로세스의 평균 크기는 서버마다 다르며 수동 조정과 서버의 리소스 및 트래픽 패턴에 대한 명확한 이해가 필요합니다. -
pm static
pm.max_children
기사의 원고는 원래 편집없이 Haydenjames.io에 게시되었으며 저자의 허가를 받아 여기에서 재현되었습니다.
높은 처리량, 낮은 대기 시간 및보다 안정적인 CPU 및 메모리 사용을 위해 PHP-FPM을 가장 잘 설정하는 방법을 빠르게 배우자. 기본적으로 대부분의 설정은 PHP-FPM의 PM (Process Manager) 문자열을 동적으로 설정하며 일반적으로 사용 가능한 메모리 문제가 발생하면 일반적으로 OnDemand가 권장됩니다. 그러나 php.net의 문서를 기반 으로이 두 가지 관리 옵션을 비교하고 높은 트래픽 설정에 대해 내가 좋아하는 옵션을 비교해 봅시다 - 정적 PM : .
-
pm dynamic
: 아동 프로세스의 수는 다음 지침에 따라 동적으로 설정됩니다. pm ondemand
: 프로세스는 필요에 따라 요청시 생성되며, 이는 동적과 다르며 서비스 시작에서 시작됩니다.
: 아동 프로세스의 수는 - 에 의해 수정됩니다.
자세한 내용은 글로벌 PHP-FPM.Conf 지침의 전체 목록을 참조하십시오.
PHP-FPM 프로세스 관리자 (PM) 및 CPUFREQ 레귤레이터의 유사성
이것은 주제가 약간 벗어난 것처럼 보일지 모르지만 PHP-FPM 조정 주제와 연관시키고 싶습니다. 좋아, 우리 모두는 노트북, 가상 머신 또는 전용 서버 등 어느 시점에서 CPU 속도가 느 렸습니다. CPU 주파수 스케일링을 기억하십니까? (CPUFREQ REGINGOR.) 이러한 설정은 OnDemand
>에서
성능으로 변경하여 성능 및 시스템 응답 성을 향상시킬 수 있습니다. 이번에는 설명을 비교하고 유사점을 찾아 봅시다 :
- : 전류 부하에 따라 CPU 주파수를 동적으로 스케일링합니다. 최고 주파수로 점프 한 다음 유휴 시간이 증가함에 따라 주파수를 줄입니다.
Governor = ondemand
: 전류 부하에 따라 주파수를 동적으로 스케일링합니다. 온 디맨드보다 부드럽게 스케일링 주파수. -
Governor = conservative
: 항상 최대 주파수로 CPU를 실행하십시오.
-
자세한 내용은 CPUFREQ 레귤레이터 옵션의 전체 목록을 참조하십시오.
Governor = performance
유사성을 알아 차렸습니까? 나는이 비교를 먼저 사용하고 싶습니다. 기사를 작성하는 가장 좋은 방법을 찾아서 PHP-FPM의 첫 번째 선택으로 추천합니다.
CPU 레귤레이터의 경우 성능 설정은 서버 CPU의 한계에 거의 달려 있기 때문에 상당히 안전한 성능 향상입니다. 다른 요인은 열, 배터리 수명 (노트북)과 같은 부작용이며 CPU 주파수를 영구적으로 100%로 설정하는 것입니다. 성능으로 설정되면 실제로 CPU의 가장 빠른 설정입니다. 예를 들어, RPI 보드의 성능 조절기를 사용하도록 강요하는 Raspberry Pi의
설정에 대해 읽어보십시오.
사용 서버의 최대 성능을 달성하십시오
PHP-FPM
설정은 서버의 메모리의 양에 크게 좌우됩니다. 기본적으로 서버 메모리가 불충분 한 문제가있는 경우 또는
가 더 나은 선택 일 수 있습니다. 반면에, 메모리를 충분히 사용 가능한 경우 서버의 최대 용량으로 pm static
를 설정하여 대부분의 PHP 프로세스 관리자 (PM) 오버 헤드를 피할 수 있습니다. 다시 말해, 계산을 할 때
는 메모리 가용성 또는 캐시 스트레스 문제를 만들지 않고 실행할 수있는 최대 PHP-FPM 프로세스 수로 설정해야합니다. 또한 CPU를 압도하고 처리되지 않은 PHP-FPM 작업이 많이 발생하기에는 너무 높게 설정하지 마십시오.
force_turbo
위의 이미지 에서이 서버의 및
는 약 10GB의 32GB의 설치된 메모리를 사용합니다. 강조 표시된 자기 해석 열에 주목하십시오. 이 스크린 샷 중에 Google 웹 로그 분석에는 약 200 개의 "활성 사용자"가있었습니다 (지난 60 초). 이 수준에서는 PHP-FPM 아동 프로세스의 약 70%가 여전히 유휴 상태입니다. 이는 PHP-FPM이 현재 트래픽에 관계없이 항상 서버 리소스의 최대 용량으로 설정되어 있음을 의미합니다. 유휴 프로세스는 온라인으로 유지되며 교통 피크를 기다리고 PM이 아동 프로세스를 스폰 할 때까지 기다렸다가 만료 후 닫지 않고 즉시 응답합니다. PHP 메모리 누출이없는 프로덕션 서버이기 때문에 가 매우 높게 설정했습니다. 현재 및 미래의 PHP 스크립트에 대해 110%의 신뢰가있는 경우 정적에서 pm = static
를 사용할 수 있습니다. 그러나 스크립트를 정기적으로 다시 시작하는 것이 좋습니다. PM 오버 헤드를 피하는 것이기 때문에 요청 수를 더 높은 수로 설정하십시오. 예를 들어, pm.max_children = 100
숫자와 초당 요청에 따라 최소한 . pm.process_idle_timeout
이 스크린 샷은 "u"(사용자) 옵션과 php-fpm 사용자의 이름으로 Linux pm.max_requests
를 사용하여 필터링됩니다. 표시되는 프로세스의 수는 약 50 개 (계산 없음)이지만 기본적으로 pm.max_requests = 0
는 터미널 창에 맞는 최상위 통계를 표시합니다.이 경우 %CPU로 정렬됩니다. 100 개의 PHP-FPM 프로세스를 모두 보려면 다음 명령을 사용할 수 있습니다. pm.max_requests = 1000
pm.max_children
를 사용할 때
및
top
를 사용하면 다음과 비슷한 오류가 발생했을 수 있습니다.
top
설정을 늘리거나 조정하려고 시도 할 수 있지만 ServerFault 게시물에 설명 된 누군가와 동일한 오류가 표시됩니다. 이 경우 는 너무 낮고 네트워크 트래픽이 통로와 피크로 크게 변동하기 때문에 올바르게 조정하기가 어렵습니다. 일반적인 조언은
를 사용하는 것입니다. 그러나 트래픽이 거의 또는 전혀 없을 때
<code>top -bn1 | grep php-fpm</code>
로그인 후 복사
가 유휴 프로세스를 0으로 종료하면 트래픽이 변동하는만큼 많은 오버 헤드 문제가 발생하기 때문에 이것은 더 나쁩니다. 유휴 시간 초과가 매우 높게 설정되어 있습니다 ...이 경우 High
만 사용해야합니다. pm ondemand
그러나 그러나 여러 PHP-FPM 풀이 있으면 , 특히 는 리소스를 절약 할 수 있습니다. 예를 들어, 여러 풀에서 여러 CPANEL 계정 또는 여러 웹 사이트를 호스팅하십시오. 예를 들어, 100 개가 넘는 cpanel 계정과 약 200 개의 도메인 이름이있는 서버가 있으며 도 잘하지 않습니다. 웹 사이트의 3 분의 2 이상이 트래픽이 거의 없기 때문에 PM dynamic
만 잘 수행 할 수 있습니다. 이는 ondemand
를 사용하여 모든 아동 프로세스가 종료되어 많은 서버 메모리를 저장 함을 의미합니다! 고맙게도 CPANEL 개발자는이 문제를 해결했으며 이제는 기본값이 pm.static
입니다. 이전에는 기본적으로 dynamic
의 사용으로 인해 유휴 CPANEL PHP-FPM 풀/계정에서도 PHP-FPM을 공유 서버의 옵션으로 만들었습니다. 트래픽이 양호한 경우 많은 PHP-FPM 풀 (공유 호스트)이있는 서버에서 호스트하지 않을 것입니다. ondemand
ondemand
결론
PHP-FPM의 는 많은 양의 트래픽을 제공하기 시작하면 PHP-FPM의 및 프로세스 관리자는 고유 한 오버 헤드로 인해 처리량을 제한 할 수 있습니다. 시스템을 이해하고 PHP-FPM 프로세스를 서버의 최대 용량과 일치하도록 설정하십시오. ondemand
또는 dynamic
를 기준으로 최대 사용 설정으로 시작하여 메모리와 CPU가 압도없이 처리 할 수있는 지점으로 증가하십시오. 를 사용하면 모든 것이 메모리에 상주 할 수 있기 때문에 시간이 지남에 따라 트래픽 피크로 인해 CPU가 피크가 발생하고 서버의 부하 및 CPU 평균이 더 부드럽습니다. PHP-FPM 프로세스의 평균 크기는 웹 서버마다 다르므로 수동으로 조정해야하므로 자동화 된 오버 헤드 프로세스 관리자 (
및 )가 더 인기있는 제안 인 이유가 있어야합니다. 이 기사가 도움이되기를 바랍니다.
업데이트 : A/B 벤치 마크 비교 차트가 추가되었습니다. PHP-FPM 프로세스를 사용하면 메모리에 상주하면 성능을 향상시키는 데 도움이되지만 메모리 사용이 증가하여 대기 상태를 유지하는 데 도움이됩니다. 설정에 가장 적합한 지점을 찾으십시오.
ondemand
dynamic
php-fpm 조정에 대한 FAQ (FAQ)
PHP-FPM이란 무엇이며 서버 성능에 중요한 이유는 무엇입니까? pm dynamic
PHP-FPM 또는 FASTCGI 프로세스 관리자는 모든 크기의 사이트, 특히 바쁜 사이트에 유용한 추가 기능이있는 또 다른 PHP FASTCGI 구현입니다. 서버가 서버가 작업자 풀을 활용하여 동시 방문자의 더 많은 요청을 처리 할 수 있기 때문에 서버 성능에 중요합니다. 이러한 프로세스는 PHP 파일을 구문 분석하고 동적 컨텐츠를 생성하여 클라이언트에 제공하는 데 책임이 있습니다. 이러한 프로세스를 효과적으로 관리함으로써 PHP-FPM은 서버 성능 및 확장 성을 크게 향상시킬 수 있습니다. ondemand
PHP-FPM은 내 웹 사이트 성능을 어떻게 향상 시킵니까?
PHP-FPM은 PHP 프로세스를 효과적으로 관리하여 웹 사이트 성능을 향상시킵니다. 주요 프로세스를 사용하여 PHP 스크립트를 처리하는 여러 자식 프로세스를 제어합니다. 이를 통해 유휴 프로세스를 종료하고 필요에 따라 새로운 프로세스를 생성 할 수 있으므로 서버 리소스를 효율적으로 사용할 수 있습니다. 또한 PHP-FPM은 Opcode 캐싱을 지원하는데, 이는 공유 메모리에 사전 컴파일 된 스크립트 바이트 코드를 저장하여 PHP 실행 속도를 크게 높일 수 있으며, 모든 요청에 대한 PHP가 스크립트를로드하고 구문 분석 할 필요가 없습니다.
PHP-FPM의 구성이란 무엇이며 성능에 어떤 영향을 미칩니 까?
PHP-FPM에서 구성 구성은 자식 프로세스 수를 고정 번호로 설정합니다. 즉, 현재 서버로드에 관계없이 들어오는 요청을 제공 할 수있는 특정 프로세스가 항상있을 것입니다. 새로운 프로세스를 생성 할 필요가 없기 때문에 높은 하중에서 성능이 향상 될 수 있습니다. 그러나 이러한 프로세스가 필요하지 않더라도 항상 실행되기 때문에 메모리 사용이 더 높아질 수 있습니다. pm static
최대 성능을 위해 PHP-FPM을 조정하는 방법은 무엇입니까?
최대 성능을 위해 PHP-FPM 조정에는 여러 구성 설정을 조정하는 것이 포함됩니다. 이러한 설정에는 사용할 프로세스 관리자를 결정하는 설정과 최대 어린이 프로세스 수를 설정하는 설정이 포함됩니다. 다른 중요한 설정으로는 , pm static
및
가 포함되어 있으며, 이는 시작된 서버 수, 최소 유휴 서버 수 및 최대 서버 수를 제어합니다. 서버의 리소스 및 트래픽 패턴과 일치하도록 이러한 설정을 조정하면 성능이 크게 향상 될 수 있습니다.
PHP-FPM의 일반적인 문제는 무엇이며 어떻게 문제를 해결할 수 있습니까?
PHP-FPM의 일반적인 문제에는 높은 CPU 사용량, 응답 시간이 느리고 최대 어린이 프로세스에 도달하는 것과 관련된 오류가 포함됩니다. 이러한 문제는 종종 설정 추가 또는 다른 프로세스 관리자로 전환하는 등 PHP-FPM 구성 설정을 조정하여 해결할 수 있습니다. 또한 모니터링 도구를 사용하여 병목 현상 및 성능 문제를 식별 할 수 있습니다. pm
PHP-FPM은 다른 PHP 핸들러와 어떻게 비교됩니까? pm.max_children
PHP-FPM은 일반적으로 다른 PHP 핸들러보다 더 효율적이고 유연한 것으로 간주됩니다. 다양한 프로세스 관리자를 지원하며 서버의 리소스 및 트래픽 패턴에 따라 조정할 수 있습니다. 또한 PHP-FPM은 Opcode Caching을 지원하고 많은 동시 요청을 처리 할 수 있으므로 바쁜 사이트에 이상적입니다. pm.start_servers
웹 서버와 함께 php-fpm을 사용할 수 있습니까? pm.min_spare_servers
예, PHP-FPM은 FASTCGI 프로토콜을 지원하는 모든 웹 서버와 함께 사용할 수 있습니다. 여기에는 Apache, Nginx 및 LightTPD와 같은 인기있는 웹 서버가 포함됩니다. pm.max_spare_servers
opcode 캐싱이란 무엇이며 PHP 성능을 어떻게 향상 시키는가?
opcode 캐싱은 공유 메모리에 사전 컴파일 된 스크립트 바이트 코드를 저장하여 PHP 성능을 향상시키는 기술입니다. 이를 통해 모든 요청에 따라 PHP가 스크립트를로드하고 구문 분석 할 필요가 없어 실행 시간이 줄어 듭니다. PHP-FPM의 성능을 모니터링하는 방법은 무엇입니까?
PHP-FPM의 성능을 모니터링하기위한 몇 가지 도구를 사용할 수 있습니다. 이러한 도구에는 PHP-FPM 상태 페이지 (현재 작업자 프로세스의 현재 상태에 대한 정보를 제공하는)와 및 와 같은 다양한 명령 줄 도구가 포함됩니다. 또한보다 자세한 메트릭과 경고를 제공하는 타사 모니터링 솔루션이 있습니다.
PHP-FPM을 사용하기위한 모범 사례는 무엇입니까?
PHP-FPM의 일부 모범 사례에는 다음이 포함됩니다. 프로세스 관리자 설정은 서버의 리소스 및 트래픽 모드와 일치합니다. 또한 최신 성능 향상 및 보안 수정을 활용하려면 PHP-FPM 및 웹 서버 소프트웨어를 최신 상태로 유지하십시오. top
위 내용은 PHP-FPM 튜닝 : ' PM STATIC ' 최대 성능의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!