>  기사  >  백엔드 개발  >  php-fpm.conf 구성 파일 중국어 및 중요한 매개변수 설명

php-fpm.conf 구성 파일 중국어 및 중요한 매개변수 설명

coldplay.xixi
coldplay.xixi앞으로
2020-08-08 16:47:112927검색

php-fpm.conf 구성 파일 중국어 및 중요한 매개변수 설명

php-fpm 워크플로

php-fpm의 전체 이름은 PHP FastCGI 프로세스 관리자입니다.

php-fpm이 시작된 후 먼저 php.ini를 읽은 다음 읽습니다. 해당 conf 구성 파일인 conf 구성은 php.ini의 구성을 재정의할 수 있습니다.

php-fpm을 시작한 후 포트 9000(구성 가능)을 수신하는 마스터 프로세스가 생성됩니다. 마스터 프로세스는 fpm.conf/www.conf를 기반으로 여러 하위 프로세스를 생성하고 하위 프로세스는 다음 작업에 사용됩니다. 실제 업무를 처리합니다.

클라이언트(예: nginx)가 포트 9000에 연결되면 유휴 하위 프로세스가 자체적으로 이를 수락합니다. 모든 하위 프로세스가 사용 중이면 수락할 새 연결이 마스터에 의해 대기열에 추가되고 fpm 하위 프로세스를 기다립니다. 프로세스가 유휴 상태입니다.

수락 대기 중인 세미 연결을 저장하는 대기열 길이는 listening.backlog에 의해 구성됩니다.

관련 학습 권장 사항: php 프로그래밍(동영상)

구성의 모든 상대 경로는 PHP 설치 경로를 기준으로 합니다.

php-fpm.conf 구성 파일 외에도 일반적으로 프로세스 풀을 구성하기 위한 다른 *.conf 구성 파일(php-fpm.conf에서 직접 구성할 수도 있음)이 있습니다. 사용자는 서로 다른 포트를 수신하고 서로 다른 작업을 처리합니다. 여러 프로세스 풀이 전역 구성을 공유합니다.

include=/opt/remi/php56/root/etc/php-fpm.d/*.conf 다른 구성 파일을 로드합니다.

php-fpm 전역 구성 매개변수 중국어 설명:

pid = /opt/remi/php56/root/var/run/php-fpm/php-fpm.pid
#pid 프로세스 파일, 기본값은 없음입니다.

error_log = /opt/remi/php56/root/var/log/php-fpm/error.log
#오류 로그 위치, 기본값: 설치 경로 #INSTALL_PREFIX#/log/php-fpm.log. syslog로 설정하면 로그가 파일에 기록되지 않고 syslogd 서비스로 전송됩니다.

syslog.facility = daemon
#시스템 로그에 로그를 기록합니다. Linux는 아직 익숙하지 않으므로 일단 무시하세요.

syslog.ident = php-fpm
#시스템 로그 식별. 여러 fpm 프로세스가 실행 중인 경우 이를 사용하여 해당 로그가 누구인지 구별해야 합니다.

log_level = 알림
#로그 수준, 기본 알림, 선택 사항: 경고, 오류, 경고, 알림, 디버그

emergency_restart_threshold = 60
#다음 Emergency_restart_interval 매개 변수 사용

emergency_restart_interval = 60s
#이 매개 변수로 시간이 설정된 경우 SIGSEGV 또는 SIGBUS를 사용하는 하위 프로세스 수가 Emergency_restart_threshold 매개변수로 설정된 값을 초과하는 경우 fpm은 정상적으로 다시 시작됩니다. 값이 0이면 이 기능이 꺼짐을 나타냅니다. 사용 가능한 단위는 s초, m분, h시간 및 d입니다. 날.

process_control_timeout = 0
#주 프로세스 재사용 신호를 수락하기 위해 하위 프로세스에 대한 시간 초과를 설정합니다. 이 시간이 지나면 재사용할 수 없다는 것을 이해합니다.

process.max = 128
#하위 프로세스를 동적으로 관리할 때 fpm이 분기할 수 있는 최대 프로세스 수, 0은 제한이 없음을 의미합니다. 이는 모든 프로세스 풀에서 시작할 수 있는 총 하위 프로세스 수이므로 주의해서 사용하세요. .

process.priority = -19
#마스터 프로세스가 루트 사용자로 시작될 때 적용되는 하위 프로세스의 우선순위를 설정합니다. 설정하지 않으면 하위 프로세스는 다음과 같이 마스터 프로세스의 우선순위를 상속합니다. 값 범위는 -19(최고) ~ 20(최저)이며 기본적으로 설정되지 않습니다.

daemonize = yes
#버그 디버깅을 위해 no로 설정하면 기본값은 yes입니다.

rlimit_files = 1024
#마스터 프로세스가 열 수 있는 최대 파일 수를 설정합니다. 기본값은 시스템 값입니다.

rlimit_core = 0
#마스터 프로세스 코어 rlimit 제한 값; 선택적 무제한 또는 >=0의 정수, 기본값은 시스템 값입니다.

events.mechanism = epoll
#이벤트 처리 메커니즘, 기본적으로 자동 감지, 선택적 값: select, poll, epoll (linux>=2.5.44), kqueue, /dev/poll, port

systemd_interval = 10s
# fpm이 시스템 서비스로 설정된 경우 상태가 서버에 보고되는 빈도(s, m, h 단위)입니다.

php-fpm 프로세스 풀 구성 풀 정의:

다양한 수신 포트와 다양한 관리 옵션에서 원하는 수의 풀을 실행할 수 있으며 수에는 제한이 없습니다.

풀 이름; 로그 및 통계에 사용됩니다.

user = apache

group = apache

#어떤 사용자와 그룹의 권한으로 pool fpm을 실행합니다.

apache를 사용하여 httpd 서비스와 같은 특정 디렉토리에 액세스

listen = 127.0.0.1:9000
# 수신 IP 및 포트는 더 나은 성능으로 Unix 소켓을 수신하기 위해 /path/to/unix/socket이 될 수 있습니다.

listen.backlog = 65535
#허용되지 않는 소켓 대기열의 크기는 FreeBSD 및 OpenBSD에서는 -1이고 다른 플랫폼에서는 기본값이 65535입니다. 동시성이 높을 때 적시에 대기열에 있는 요청을 처리하는 것이 중요합니다. 방식; 너무 크면 백로그 및 처리량이 너무 많아집니다. 그 후 nginx는 시간 초과를 기다렸다가 fpm과의 소켓 연결을 끊었습니다. 이는 실패했습니다. -1을 사용하지 마십시오. 1024 이상, 바람직하게는 2의 거듭제곱을 사용하는 것이 좋습니다.

#A 풀은 백로그 대기열을 공유하며 모든 풀 프로세스는 연결을 수락하기 위해 이 대기열로 이동합니다.

#최대 개수는 시스템 구성 cat /proc/sys/net/core/somaxconn에 의해 제한됩니다. 시스템 구성 수정: vim /etc/sysctl.conf, net.core.somaxconn = 2000을 추가하면 최대 개수는 2000입니다. 그런 다음 최대 PHP 수 백로그는 2000에 도달할 수 있습니다.

listen.owner = apache

listen.group = apache

listen.mode = 0660

#소켓 연결 방법을 사용할 때 유닉스 소켓 권한을 가진 사용자를 지정합니다. 기본값은 실행 중인 사용자와 동일합니다. tcp 연결을 사용할 때 주석을 달 수 있습니다.

listen.allowed_clients = 127.0.0.1
#fpm에 연결이 허용되는 주소를 설정합니다. 예를 들어 nginx는 여러 주소를 쉼표로 구분하여 연결할 수 있습니다. 기본적으로 연결되어 있습니다.

process.priority = -19
#풀 프로세스의 권한도 마스터 프로세스가 루트 사용자여야 합니다. 설정하지 않으면 마스터 프로세스의 우선 순위가 상속됩니다.

pm = 동적
# 시작 시 하위 프로세스 관리 방법, 선택 값: static(시작 시 지정된 수 생성), 동적(시작 시 상황에 따라 하나 이상 생성), ondemand(시작 시 하위 프로세스가 생성되지 않음) , 필요한 경우에만 생성)

pm.max_children = 5
#풀은 동시에 최대 5개의 프로세스를 가질 수 있으며 세 가지 관리 방법을 모두 구성해야 합니다

pm.start_servers = 2
#Fpm은 2개의 하위 프로세스를 생성합니다 시작 시 동적 동적 관리 방법에만 적용됩니다.

pm.min_spare_servers = 2
#서버가 유휴 상태일 때 최소 2개의 하위 프로세스가 유지됩니다. 이 수가 충분하지 않으면 동적 동적 관리만 생성됩니다.

pm.max_spare_servers = 3
#서버가 유휴 상태일 때 최대 하위 프로세스 수입니다. 너무 많으면 동적 동적 관리 방법만 적용됩니다.

pm.process_idle_timeout = 10s
# 하위 프로세스는 10초 동안 유휴 상태가 된 후 종료됩니다.

pm.max_requests = 500
#각 하위 프로세스는 최대 500개의 요청을 처리한 후 재활용되므로 메모리 누수를 방지할 수 있습니다.

pm.status_path string

# FPM 상태 페이지의 URL입니다. 설정하지 않으면 상태 페이지에 액세스할 수 없습니다. 기본값: 없음.

ping.path string

#FPM 모니터링 페이지 핑 URL. 설정하지 않으면 핑 페이지에 접근할 수 없습니다. 이 페이지는 FPM이 살아 있고 요청에 응답할 수 있는지 여부를 외부적으로 감지하는 데 사용됩니다. 슬래시(/)로 시작해야 합니다.

ping.response string
# 핑 요청의 반환 응답을 정의하는 데 사용됩니다. 텍스트/일반 형식의 텍스트를 HTTP 200으로 반환합니다. 기본값: 퐁.

process.priority int
#작업자의 nice(2) 우선순위를 설정합니다(설정된 경우). 값 범위는 -19(가장 높은 우선순위)부터 20(낮은 우선순위)까지입니다. 기본값: 설정하지 않음

접두사 문자열
#경로 감지 시 사용되는 접두사

access.log = var/log/$pool.access.log
#사용하지 않는 액세스 파일 로그입니다. yii2는 index.php에 액세스할 때마다 실제 PHP 파일을 기록합니다.

slowlog = var/log/$pool.log.slow
#실행 속도가 너무 느린 PHP 파일의 로그는 어떤 코드 라인이 너무 느린지 정확하게 기록합니다. 이는 매우 유용하며 시간이 있을 때 적용됩니다. 세트.

request_slowlog_timeout = 2s
#이 실행 시간을 초과하면 느린 로그가 기록됩니다.

request_terminate_timeout = 3s
#단일 요청의 시간 초과 때로는 php.ini에서 설정한 최대 실행 시간이 적용되지 않아 종료됩니다. 실행 시간이 긴 요청.

rlimit_files = 1024
#열린 핸들의 최대 개수, 기본값은 시스템 값입니다.

rlimit_core = 0
#사용되는 최대 코어 수, 기본값은 시스템 할당입니다.

chroot = /path
#경로는 절대 경로여야 합니다. 하위 프로세스의 디렉터리를 변경하면 해당 프로세스의 파일 시스템 읽기 및 쓰기가 실제 운영 체제 파일 시스템과 분리될 수 있어 보안에 좋습니다.

chdir = /var/www

#현재 작업 디렉터리를 변경합니다. 상대 경로를 사용할 수 있으며 기본값은 현재 디렉터리 또는 chroot입니다.

catch_workers_output = yes
#표준 출력 stdout 및 표준 오류 stderr을 기본 오류 로그로 리디렉션합니다. 설정하지 않으면 이 두 로그가 /dev/null로 전달되며 이 구성으로 인해 페이지 지연이 발생합니다. 밀리초, 기본적으로 활성화되어 있지 않습니다.

clear_env = no
#작업 프로세스를 생성할 때 환경 변수를 지울지 여부입니다. 그렇다면 하위 프로세스 getenv()는 $_ENV 및 $_SERVER에 액세스할 수 없습니다.

security.limit_extensions = .php .php3 .php4 .php5
#보안을 위해 실행 가능한 스크립트 접미사를 제한하세요.

#현재 풀의 오류 로그 위치 지정 등 현재 풀에 대한 추가 php.ini 구성을 지정하세요.

php_value/php_flag
#php.ini의 내용은 ini_set으로 설정하고 덮어쓸 수 있습니다.

php_admin_value/php_admin_flag
#위와 동일하지만 ini_set으로 덮어쓰지 않습니다.

#플래그가 설정되면 값은 on, off, 1, 0, true, false, yes 또는 no만 가능하며 다른 유형의 값은 값을 사용해야 합니다.

php_flag[display_errors] = off

php_admin_value[error_log] = /var/log/fpm-php.www.log

php_admin_flag[log_errors] = on

php_admin_value[memory_limit] = 32M

#이 방법에서 `disable_functions` 및 `disable_classes`를 설정하면 php.ini의 설정은 덮어쓰이지 않고 추가만 됩니다.

참고: PHP 구성 값은 php_value 또는 php_flag를 통해 설정되며 이전 값을 덮어씁니다.
disable_functions 또는 disable_classes에 대해 php.ini에 정의된 값은 덮어쓰이지 않지만 새 설정은 원래 값에 추가됩니다.
php_admin_value 또는 php_admin_flag를 사용하여 정의된 값은 PHP 코드에서 ini_set()으로 재정의될 수 없습니다.

5.3.3부터는 웹서버를 통해서도 PHP 설정이 가능해졌습니다.

nginx는 unixsock을 통해 php-fpm과 통신합니다.

적용 가능한 시나리오: nginx와 php-fpm이 동일한 서버에 있는 경우, tcp 포트 통신 대신 unixsocket 프로세스 간 통신을 직접 사용할 수 있습니다. 연결 시간을 절약하여 성능을 향상시킵니다.

1. php-fpm의 수신 대기를 /opt/remi/php56/root/var/run/php-fpm/php567-fpm.sock(상대 경로 사용 가능)로 설정한 다음 fpm을 다시 시작하면 php567이 실행됩니다. fpm.sock 파일이 자동으로 생성됩니다

2. nginx의 fastcgi_pass 매개변수를 unix:/opt/remi/php56/root/var/run/php-fpm/php567-fpm.sock으로 변경합니다. -fpm.sock 파일을 사용하려면 nginx에 php567-fpm.sock 파일에 액세스할 수 있는 권한이 있는지 확인해야 합니다.

요약:

fpm에 해당 디렉터리에 파일을 쓸 수 있는 권한이 있고 nginx에 파일을 읽을 수 있는 권한이 있는 한 sock 파일은 어디에서나 생성할 수 있습니다. TCP 프로토콜은 데이터의 정확성을 보장하기 때문에 tcp 연결이 더 안정적이지만 sock은 데이터 복사본과 컨텍스트 전환이 적고 리소스를 덜 소비합니다. 그러나 sock은 nginx와 fpm이 동일한 시스템에 있을 때만 사용할 수 있습니다.

php-fpm 프로세스 상태 모니터링

1. nginx 구성: 상태 요청이 발생하면 php

위치로 직접 전달 ~^/status$ {

​​ fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;

fastcgi_params;

Fastcgi_pass 127.0.0.1:9000;

}

2.fpm 구성: pm.status_path = /status

3 그런 다음 fpm과 nginx를 다시 브라우저에 액세스하면 표시됩니다. :

결과는 기본적으로 ?json/html/xml 매개변수를 전달하여 각각 json 및 기타 형식으로 결과를 얻을 수 있습니다. 매개변수 전체는 각 하위 프로세스의 세부정보를 볼 수 있습니다.

풀 프로세스 풀 이름

프로세스 관리자 프로세스 관리 방법

start time 프로세스가 언제 시작되었나요

start after 프로세스가 실행된 지 몇 초가 되었는지

accepted conn 풀이 허용한 총 연결 수

listen queue 수락 대기 중인 연결 수

max Listen queue fpm 시작 후 기록 수락 대기 중인 최대 연결 수

listen queue len 구성된 청취 대기열의 최대 길이는 `listen.backlog`에 의해 제한되며 시스템 `cat /proc/sys/net/core/somaxconn` 중 최소값

유휴 프로세스 유휴 프로세스 수

활성 프로세스 작업 프로세스 수(제한 사항이 있는 경우 총 하위 프로세스 수)

총 프로세스 하위 프로세스의 총 수

max 활성 프로세스 fpm이 시작된 후 역사상 최대 동시 작업 수 프로세스 수

최대 하위 프로세스에 도달함 프로세스 관리 모드가 '동적' 및 '온디맨드'인 경우 , 이 값은 하위 프로세스가 충분하지 않을 때 마스터가 하위 프로세스를 더 생성하는 횟수입니다.

느린 요청 느린 요청 수

full 매개변수 다음

pid 하위 프로세스 ID

상태 하위 프로세스 상태(Idle , Running, ...);

start time 하위 프로세스가 시작된 시간

start 이후 하위 프로세스가 시작된 이후 몇 초 동안 실행되었는지

requests 현재 하위 프로세스가 처리한 요청 수

요청 기간 요청에 소요된 나노초 수

요청 방법(GET, POST, ...)

요청 URI 요청 매개변수

콘텐츠 길이 요청의;

user - 사용자(PHP_AUTH_USER)(또는 설정되지 않은 경우 '-');

php 파일이 요청되는 스크립트;

마지막 요청 CPU 마지막 요청에 소비된 CPU 리소스

마지막 요청 메모리 마지막 요청의 최대 메모리 소비

프로세스가 유휴 상태이면 이 정보는 마지막 요청의 관련 데이터를 기록하고, 그렇지 않으면 현재 요청의 관련 데이터입니다.

백로그 구성 문제

fpm 하위 프로세스는 동시에 하나의 요청만 처리할 수 있습니다. 백로그가 너무 크게 설정되어 있고 nginx와 같은 클라이언트가 시작한 요청이 fpm 하위 프로세스인 nginx에서 허용되지 않습니다. 이 연결을 끊고 fpm이 사용 중이면 연결이 끊어진 것을 발견하게 되므로 오류가 보고됩니다. 백로그를 너무 작게 설정하면 트래픽이 커지면 모든 fpm 하위 프로세스가 사용 중이 되어 백로그가 가득 차게 되며 이때 nginx가 다시 요청하면 직접 연결이 거부됩니다. 거부되었습니다. 따라서 백로그 매개변수를 적절하게 설정해야 합니다.

대부분의 매개변수는 시스템 기본값으로만 설정하면 됩니다. 몇 가지 중요한 매개변수 설정만 알면 관련 지침을 다시 찾아볼 수 있습니다.

관련 권장 사항: 프로그래밍 비디오 코스

위 내용은 php-fpm.conf 구성 파일 중국어 및 중요한 매개변수 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 jb51.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제