이 글에서는 주로 Linux에서 php-fpm의 일부 중요한 매개변수에 대한 중국어 상세 설명을 설명하고, php-fpm의 매개변수 최적화에 대해 자세히 소개합니다. php-fpm의 성능을 살펴보겠습니다. Aspect를 소개하겠습니다
php-fpm.conf 중요 매개변수
pid = run/php-fpm.pid
#pid 설정, 기본값은 설치에서 var/run/php-입니다. fpm.pid 디렉토리,
error_log = log/php-fpm.log
#오류 로그를 활성화하는 것이 좋습니다. 기본값은 설치 디렉토리
log_level의 var/log/php-fpm.log입니다. = 통지# 사용 가능한 오류 수준은 경고(즉시 처리해야 함), 오류(오류 상황), 경고(경고 상황), 알림(일반적인 중요 정보), 디버그(디버깅 정보)입니다.
emergency_restart_threshold = 60 Emergency_restart_interval = 60s
# Emergency_restart_interval 값 내에서 SIGSEGV 또는 SIGBUS 오류가 있는 php-cgi 프로세스 수가 Emergency_restart_threshold를 초과하면 php-fpm이 정상적으로 다시 시작됨을 나타냅니다. 이 두 가지 옵션은 일반적으로 기본값으로 유지됩니다.
process_control_timeout = 0#주 프로세스의 재사용 신호를 승인하기 위한 하위 프로세스의 시간 초과를 설정합니다. 사용 가능한 단위: s(초), m(분), h(시간) 또는 d(일) 기본값 단위: s(초). 기본값: 0.
daemonize = yes#Execute fpm 기본값은 yes이며 디버깅을 위해 no로 변경할 수 있습니다. FPM에서는 서로 다른 설정으로 여러 프로세스 풀을 실행할 수 있습니다. 이러한 설정은 각 프로세스 풀에 대해 개별적으로 설정할 수 있습니다.
listen = 127.0.0.1:9000#fpm 수신 포트, 이는 nginx에서 PHP가 처리하는 주소입니다. 일반적으로 기본값이면 충분합니다. 사용 가능한 형식은 'ip:port', 'port', '/path/to/unix/socket'입니다. 각 프로세스 풀을 설정해야 합니다.
listen.backlog = -1#Backlog 번호, -1 운영 체제에 따라 무제한을 나타냅니다. 이 줄을 주석 처리하면 됩니다.
listen.allowed_clients = 127.0.0.1
#FastCGI 프로세스의 IP에 대한 액세스를 허용합니다. 다른 호스트의 nginx도 이 FPM 프로세스에 액세스하도록 설정하려면 청취를 설정해야 합니다. 로컬로 액세스할 수 있는 IP입니다. 기본값은 임의입니다. 각 주소는 쉼표로 구분됩니다. 설정하지 않거나 비어 있으면 모든 서버에서 연결을 요청할 수 있습니다.
listen.owner = www
listen.mode = 0666
#unix 소켓 설정 옵션 if 접속하려면 tcp를 사용하세요. 여기에 댓글을 달아주세요.
user = www
#프로세스를 시작하는 계정 및 그룹
pm = 동적
#전용 서버의 경우 pm을 정적으로 설정할 수 있습니다. #하위 프로세스를 제어하는 방법은 정적 및 동적 옵션이 있습니다. static을 선택한 경우 pm.max_children에 의해 고정된 수의 하위 프로세스가 지정됩니다. 동적을 선택한 경우 다음 매개변수에 의해 결정됩니다.
pm.max_children #,
최대 하위 프로세스 수
pm.start_servers #, 시작 시 프로세스 수
pm.min_spare_servers #, 유휴 프로세스의 최소 수를 확인하십시오. 유휴 프로세스가 이 값보다 작으면 새 하위 프로세스
pm.max_spare_servers #를 생성하여 유휴 프로세스의 최대 수를 보장하고 유휴 프로세스가 이 값보다 큰 경우 clean it up
pm.max_requests = 1000
# 각 하위 프로세스가 다시 태어나기 전에 제공되는 요청 수를 설정합니다. 메모리 누수가 있을 수 있는 타사 모듈에 유용합니다. '0'으로 설정하면 요청이 항상 발생합니다. 허용됩니다. PHP_FCGI_MAX_REQUESTS 환경 변수와 동일합니다. 기본값: 0.
pm.status_path = /status
#설정되지 않은 경우 상태 페이지에 액세스할 수 없습니다. 모니터링은
ping.path = /ping
#FPM을 사용합니다. 모니터링 페이지의 핑 URL을 설정하지 않으면 이 페이지는 FPM이 살아 있고 응답할 수 있는지 외부적으로 감지하는 데 사용됩니다. 요청 시 슬래시(/)로 시작해야 합니다.
ping.response = pong
#ping 요청의 반환 응답을 정의하는 데 사용됩니다. 반환되는 텍스트/일반 형식 텍스트는 HTTP 200입니다. 기본값: pong.
request_terminate_timeout = 0
#시간 초과 설정 단일 요청 중단 시간의 경우 이 옵션은 php.ini 설정의 'max_execution_time'이 특별한 이유로 실행 중인 스크립트를 중단하지 않는 경우 유용할 수 있습니다. 이를 '끄기'를 의미하려면 '0'으로 설정하세요. 502 오류가 자주 발생하는 경우 옵션입니다. request_slowlog_timeout = 10s slowlog = log / $pool.log.slow rlimit_files = 1024 rlimit_core = 0 chroot = chdir = catch_workers_output = yes php-fpm 매개변수 조정 pm = 사용할 프로세스 번호 관리 방법을 나타냅니다. dynamic은 php-fpm 프로세스 수가 동적임을 의미합니다. 요청이 더 많으면 유휴 프로세스 수가 다음보다 적지 않도록 자동으로 증가합니다. pm.min_spare_servers. 프로세스 수가 더 많은 경우 중복 프로세스 수가 pm.max_spare_servers static을 넘지 않도록 해당 정리가 수행됩니다. 이는 php-fpm 프로세스 수가 임을 의미합니다. static 프로세스 수는 항상 pm.max_children에 지정된 수입니다. 그런 다음 늘리거나 줄입니다. pm.max_children = 300 정적 모드에서 시작된 php-fpm 프로세스 수 4G 메모리가 있는 서버에서는 200이면 충분합니다(내 1G 테스트 머신의 경우 64가 가장 좋습니다. 최상의 값을 얻으려면 스트레스 테스트를 사용하는 것이 좋습니다) pm.max_requests = 10240; nginx php- fpm 구성 과정 중 가장 큰 문제는 내부 누수입니다. 서버의 로드는 크지 않지만 메모리 사용량이 급격히 증가합니다. 메모리를 빠르게 소모한 다음 스왑 파티션을 먹기 시작하고 시스템이 빠르게 중단됩니다! 실제로 공식 소개에 따르면 php-cgi에는 메모리 누수가 없습니다. 각 요청이 완료된 후 php-cgi는 메모리를 회수하지만 이를 운영 체제에 해제하지는 않습니다. 이로 인해 많은 양의 메모리가 발생하게 됩니다. php-cgi가 차지합니다. 공식적인 해결책은 PHP_FCGI_MAX_REQUESTS의 값을 낮추는 것입니다. php-fpm을 사용하는 경우 해당 php-fpm.conf는 max_requests입니다. 이 값은 스레드가 다시 시작되기 전에 전송될 요청 수를 의미합니다. php-fpm이 자동으로 메모리를 해제할 수 있도록 이 값을 적절하게 낮추십시오. 대부분의 사람들이 인터넷에서 말하는 것처럼 51200이 아닙니다. 실제로 이와 관련된 또 다른 값인 max_children이 있습니다. 프로세스마다 생성되므로 실제 메모리 소비량은 max_children*max_requests*각 요청에 사용된 메모리입니다. 이를 기반으로 메모리 사용량을 추정할 수 있으므로 종료하기 위한 스크립트를 작성할 필요가 없습니다. request_terminate_timeout = 30; 최대 실행 시간은 php.ini에서도 구성할 수 있습니다(max_execution_time) request_slowlog_timeout = 2; 느린 로그 활성화 rlimit_files = 1024; php-fpm의 열린 파일 설명자 제한을 늘립니다. 관련 권장 사항:
#요청이 타임아웃 기간으로 설정되면 해당 PHP 호출 스택 정보가 완전히 느린 로그에 기록됩니다. '0'으로 설정하면 'Off'
#request_slowlog_timeout과 함께 사용되는 느린 요청 로깅
#파일 열기 설명자의 rlimit 제한 설정 기본값: 기본 열기 가능 핸들의 시스템 정의 값은 1024입니다. , ulimit -n을 사용하여 보거나 ulimit -n 2048을 사용하여 수정할 수 있습니다.
#코어 rlimit의 최대 제한 값을 설정합니다. 사용 가능한 값: '무제한', 0 또는 양수 integer 기본값: 시스템 정의 값.
#At 시작 Chroot 디렉터리. 정의된 디렉터리는 절대 경로여야 합니다. 설정하지 않으면 chroot가 사용되지 않습니다.
#시작 시 자동으로 이 디렉터리로 이동됩니다. 디렉토리는 절대 경로여야 합니다. 기본값: 현재 디렉토리 또는 / 디렉토리(chrooting 시)
#설정되지 않은 경우 stdout 및 stderr을 기본 오류 로그 파일로 리디렉션합니다. stderr는 FastCGI 규칙에 따라 /dev/null로 리디렉션됩니다. 기본값: 비어 있음.
pm.start_servers = 20; 동적 모드에서 시작하는 php-fpm 프로세스 수
pm.min_spare_servers = 5; 동적 모드에서 최소 php-fpm 프로세스 수
pm.max_spare_servers = 35;최대 php-fpm 프로세스 수 동적 모드
slowlog = log/$pool.log.slow; 느림 로그 경로
위 내용은 Linux_php 기술에 따른 php-fpm 매개변수 구성 및 매개변수 최적화 지침 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!