>  기사  >  백엔드 개발  >  PHP-FPM의 두 가지 프로세스 관리 모드

PHP-FPM의 두 가지 프로세스 관리 모드

小云云
小云云원래의
2018-03-29 16:12:041466검색

php-fpm에는 두 가지 프로세스 관리 모드가 있습니다. php-fpm 프로세스 수는 설정에 따라 동적 및 정적으로 나눌 수도 있습니다. 하나는 지정된 개수의 php-fpm 프로세스를 늘리거나 줄이지 않고 직접 시작하는 것이고, 다른 하나는 처음에 특정 개수의 php-fpm 프로세스를 시작하고 요청량이 커지면 php-fpm을 동적으로 늘리는 것입니다. 프로세스를 상한까지 계산하고 유휴 프로세스 수가 하한에 도달하면 자동으로 해제합니다.
이 두 가지 실행 방법은 서버의 실제 요구에 따라 조정될 수 있습니다.
여기에 관련된 몇 가지 매개 변수에 대해 이야기해 보겠습니다. pm, pm.max_children, pm.start_servers, pm.min_spare_servers 및 pm.max_spare_servers입니다.
pm은 해당 방법을 사용한다는 의미이며 정적 또는 동적 중에서 선택할 수 있는 두 가지 값이 있습니다.
이전 버전에서는 동적을 Apache-like라고 불렀습니다. 구성 파일에 제공된 지침에 주의하세요. PHP5.3php-fpm의 기본 정적 처리 방법은 php-cgi 프로세스가 오랜 시간 동안 메모리를 점유하고 해제할 수 없게 만듭니다. 이는 nginx 오류가 발생하는 이유 중 하나입니다. 아파치 모드로 변경할 수 있습니다.
다음 네 가지 매개변수는 다음을 의미합니다. pm.max_children: 정적 모드에서 열린 php-fpm 프로세스 수.
pm.start_servers: 동적 모드에서 시작하는 php-fpm 프로세스 수입니다.
pm.min_spare_servers: 동적 모드의 최소 php-fpm 프로세스 수입니다.
pm.max_spare_servers: 동적 모드의 최대 php-fpm 프로세스 수입니다. dm이 static으로 설정된 경우 pm.max_children 매개변수만 적용됩니다. 시스템은 설정된 수의 php-fpm 프로세스를 엽니다.
dm이 동적으로 설정된 경우 pm.max_children 매개변수는 유효하지 않으며 다음 세 매개변수가 적용됩니다. php-fpm이 실행되기 시작하면 시스템은 pm.start_servers php-fpm 프로세스를 시작한 다음 시스템 필요에 따라 pm.min_spare_servers와 pm.max_spare_servers 사이의 php-fpm 프로세스 수를 동적으로 조정합니다.
그럼 우리 서버에는 어떤 실행 방식이 더 좋은가요? 실제로 Apache와 마찬가지로 우리가 실행하는 PHP 프로그램도 실행 후 메모리 누수가 발생합니다.
이것이 php-fpm 프로세스가 처음에는 약 3M 정도의 메모리만 차지하다가 일정 기간 실행된 후에는 20-30M으로 늘어나는 이유이기도 합니다. 따라서 동적 방식은 중복된 프로세스를 종료하고 일부 메모리를 재활용 및 해제할 수 있으므로 메모리가 적은 서버나 VPS에서 사용하는 것이 좋습니다. 구체적인 최대량은 메모리/20M 기준으로 구해집니다. 예를 들어 512M VPS의 경우 pm.max_spare_servers를 20으로 설정하는 것이 좋습니다. pm.min_spare_servers는 서버의 부하에 따라 5~10 사이로 설정하는 것이 더 적합합니다.
그리고 상대적으로 메모리가 큰 서버의 경우 정적으로 설정하면 효율성이 향상됩니다. php-fpm 프로세스를 자주 전환하면 지연이 발생하므로 메모리가 충분히 크면 정적 효과가 더 좋습니다. 메모리/30M 기준으로 수량도 획득 가능합니다. 예를 들어, 2GB 메모리가 있는 서버는 50으로 설정될 수 있고, 4GB 메모리가 있는 서버는 100으로 설정될 수 있습니다.

관련 권장 사항:

php-fpm 파일 구성 방법

php-fpm 공개 상태 통계 예제 코드

php-FPM 프로세스 풀 탐색에 대한 자세한 설명

위 내용은 PHP-FPM의 두 가지 프로세스 관리 모드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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