PHP 프로 세 스 관리자 php-fpm
7851 단어 php-fpmphp프로 세 스 관리자
php-fpm 는 PHP 의 프로 세 스 관리자 입 니 다.php 아래 의 많은 work 프로 세 스 는 php-fpm 프로 세 스 관리자 가 관리 합 니 다.
php-fpm 의 작업 원리
php-fpm 전체 이름 은 PHP FastCGI 프로 세 스 관리자 입 니 다.php-fpm 가 시 작 된 후 php.ini 를 먼저 읽 은 다음 에 해당 하 는 conf 프로필 을 읽 습 니 다.conf 설정 은 php.ini 설정 을 덮어 쓸 수 있 습 니 다.
php-fpm 를 시작 하면 master 프로 세 스 를 만 들 고 9000 포트(설정 가능)를 감청 합 니 다.master 프로 세 스 는 fpm.conf/www.conf 에 따라 몇 개의 하위 프로 세 스 를 만 들 고 하위 프로 세 스 는 실제 업 무 를 처리 합 니 다.
클 라 이언 트(예 를 들 어 nginx)가 9000 포트 를 연결 할 때 남 은 하위 프로 세 스 는 스스로 accept 를 합 니 다.하위 프로 세 스 가 모두 바 쁜 상태 에 있 으 면 새로 들 어 온 accept 연결 은 master 에 의 해 대기 열 에 들 어가 fpm 하위 프로 세 스 가 남 을 때 까지 기 다 립 니 다.accept 를 저장 할 반 연결 대기 열 이 얼마나 길 고 listen.backlog 에서 설정 합 니 다.
php-fpm 프로 세 스 와 하위 프로 세 스 를 보 는 방법
php-fpm 와 관련 된 모든 프로 세 스 를 보십시오.아래 그림
여기
pool www
모두 phop-fpm 의 하위 프로 세 스 입 니 다.즉,우리 가 흔히 말 하 는 work 프로 세 스 입 니 다.php-fpm 아래 하위 프로 세 스 보기
위의 명령 을 통 해 phop-fpm 와 관련 된 프로 세 스 를 볼 수 있 습 니 다.phop-fpm 의 master 프로 세 스 와 work 프로 세 스 를 보다 직관 적 으로 볼 필요 가 있다 면 아래 의 방식 으로 프로 세 스 를 볼 수 있 습 니 다.
이곳 의 5370 은 php-fpm 의 master 프로 세 스 번호 입 니 다.위의 명령 을 통 해 이미 직관 적 으로 얻 을 수 있다.
위의 명령 을 통 해 phop-fpm 는 master 프로 세 스 로 서 15 개의 키 프로 세 스 가 있 음 을 알 수 있 습 니 다.이 하위 프로 세 스 수 는 프로 세 스 사용자 정의 설정 이 가능 합 니 다.다음 매개 변수 프로 세 스 설정 을 통 해:
pm = dynamic #
pm.max_children = 20 #
pm.start_servers = 15 # php-fpm ,
php-fpm 매개 변수 설정 설명php-fpm 전역 설정 매개 변수
#php-fpm 。
# fpm。
user = www
group = www
#php-fpm , , socke 。
# tcp, socket socket , 。
listen = 127.0.0.1:9000
# socket , user、group 。
# , 。
listen.owner = www
listen.group = www
listen.mode = 0660
# php-fpm 。 "," 。 。
# Nginx php-fpm , Nginx ip 。
# Nginx php-fpm , 127.0.0.1 。
listen.allowed_clients = 127.0.0.1
#pid , php ,
# pid , php-fpm ,
# 。 none。
pid = /opt/remi/php72/root/var/run/php-fpm/php-fpm.pid
# , : #INSTALL_PREFIX#/log/php-fpm.log。
# syslog,log syslogd 。
error_log = /opt/remi/php72/root/var/log/php-fpm/error.log
#PHP
security.limit_extensions = .php .php3 .php4 .php5 .php7
# , fpm , 。
syslog.ident = php-fpm
# , :alert, error, warning, notice, debug。
log_level = notice
# , emergency_restart_interval 。
emergency_restart_threshold = 60
# 。 ,
# SIGSEGV SIGBUS emergency_restart_threshold 。
# fpm , 0 off , :s ,m ,h ,d 。
emergency_restart_interval = 60s
# 。
process_control_timeout = 0
# ,fpm fork ,0 ,
# , 。
process.max = 128
# , master root ;
# , master , -19( ) 20( ), 。
process.priority = -19
# no bug, yes。
daemonize = yes
#master 。 。
rlimit_files = 1024
#master rlimit ; unlimited >=0 , 。
rlimit_core = 0
# , , :select,poll,
#epoll(linux>=2.5.44),kqueue,/dev/poll,port
events.mechanism = epoll
#fpm 。 s,m,h。
# fpm 。
systemd_interval = 10s
php-fpm 프로 세 스 풀 설정
#php-fpm 。
listen.backlog = 65535
#php , master root ,
# , master 。
process.priority = -19
#
#static( , php-fpm );
#dynamic( , php-fpm pm.start_servers , );
#ondemand( , php-fpm , fork );
pm = dynamic
#
pm.max_children = 5
# , pm = dynamic 。
pm.start_servers = 2
# 2 , , dynamic
pm.min_spare_servers = 2
# , kill, dynamic
pm.max_spare_servers = 3
# , , killed。
pm.process_idle_timeout = 10s
# 。 。
pm.max_requests = 500
#php-fpm uri
pm.status_path string
#php-fpm ping 。
# , ping 。
# php-fpm 。 (/)。
ping.path string
# ping 。 HTTP 200 text/plain 。 :pong。
ping.response string
# worker nice(2) ( )。
# -19( ) 20( )。
# :
process.priority int
#
prefix string
# , , yii2 index.php, PHP 。
access.log = var/log/$pool.access.log
#php
slowlog = var/log/$pool.log.slow
#
request_slowlog_timeout = 2s
# , php.ini , 。
request_terminate_timeout = 3s
# , 。
rlimit_files = 1024
# , 。
rlimit_core = 0
부분 설정 데모php-fpm 의 backlog 크기 설정
pp-fpm 의 backlog 크기 설정 은 pp-fpm 의 처리 능력 과 관련 이 있 으 며,클 수록 좋 은 것 이 아 닙 니 다.
이 값 이 너무 커서 php-fpm 가 처리 되 지 않 습 니 다.nginx 쪽 에서 시간 을 초과 하여 연결 을 끊 고 504 gateway timeout 오 류 를 보고 합 니 다.동시에 php-fpm 처리 완료 write 데 이 터 를 nginx 에 보 낼 때 TCP 연결 이 끊 긴 것 을 발견 하고"Broken pipe"를 보고 합 니 다.
이 값 이 너무 작 으 면 nginx 와 같은 client 요청 은 php-fpm 의 accept queue 에 들 어 갈 수 없습니다."502 Bad Gateway"오류 가 발생 했 습 니 다.따라서 php-fpm 의 QPS 에 따라 backlog 의 크기 를 결정 해 야 한다.계산 방식 은 QPS=backlog 가 가장 좋다.
php-fpm 시작 모드
pp-fpm 는 socket 으로 시작 하거나 포트 로 시작 합 니 다.이 두 가지 방식 은 실제 상황 에 따라 설정 합 니 다.
nginx 와 phop-fpm 는 같은 서버 에 있 습 니 다.이 때 는 유 닉 스 socket 프로 세 스 간 통신 을 직접 할 수 있 습 니 다.tcp 포트 로 통신 하지 않 고 연결 을 만 드 는 시간 을 절약 하여 성능 을 향상 시 킬 수 있 습 니 다.sock 파일 은 어디 에 나 만 들 수 있 습 니 다.fpm 가 그 디 렉 터 리 에 파일 을 쓸 수 있 는 권한 이 있 으 면 nginx 는 읽 을 수 있 는 권한 이 있 습 니 다.tcp 연결 이 더욱 안정 적 입 니 다.tcp 프로 토 콜 이 데이터 의 정확성 을 보장 하지만 sock 은 더 적은 데이터 복사 와 컨 텍스트 전환 이 있 고 자원 이 적 습 니 다.하지만 nginx 와 fpm 는 같은 기계 에서 만 socket 을 사용 할 수 있 습 니 다.
어떻게 socket 시작 을 선택 합 니까?포트 시작 을 선택 합 니까?
tcp 방식 은 유 닉 스 방식 에 비해 병발 량 이 높 기 때문에 병발 량 이 높 은 항목 에 대해 tcp 방식 을 사용 하 는 것 을 권장 합 니 다.현재 Nginx 설정 예제 파일 은 기본적으로 tcp 방식 입 니 다.
유 닉 스 방식 을 사용 하면 최적화 할 수 있 는 점 은 socket 파일 을/dev/shm 디 렉 터 리 아래 에 두 는 것 입 니 다.대체적으로 이 디 렉 터 리 아래 의 파일 은 하 드 디스크 에 저 장 된 것 이 아니 라 메모리 에 저 장 된 것 입 니 다.하 드 디스크 읽 기와 메모리 읽 기 에 있어 서 누가 빠 르 고 누가 느 린 지 는 틀림없이 메모리 가 가장 빠 를 것 이다.
socket 방식 으로 socke 파일 을 보 는 방법 을 시작 합 니 다.
socket 파일 은 위 에서 언급 한 pid 설정 항목 에 따라 정 해 집 니 다.우 리 는 프로 세 스 번 호 를 보기 위해 cat 명령 을 직접 사용 할 수 있 습 니 다.
하위 프로 세 스 의 기본 시작 수량 은 위의 pm=dynamic 설정 을 통 해 알 수 있 습 니 다.이 방식 은 하위 프로 세 스 크기 를 동적 으로 설정 하 는 동시에 기본 하위 프로 세 스 수 를 설정 할 수 있 습 니 다.
pm = dynamic
pm.max_children = 20
### 15 , shell 。
pm.start_servers = 15
3 으로 설정 하려 고 할 때 다음 과 같은 오류 정 보 를 표시 합 니 다.설명,이곳 의 startserver 설정 항목 과 minspare_server 설정 은 일정한 관계 가 있 습 니 다.우 리 는 최소 10 으로 설정 하면 php-fpm 를 정상적으로 시작 할 수 있 습 니 다.
이상 은 PHP 프로 세 스 관리자 pp-fpm 의 상세 한 내용 을 알 아 보 는 것 입 니 다.더 많은 PHP 프로 세 스 관리자 pp-fpm 에 관 한 자 료 는 우리 의 다른 관련 글 을 주목 하 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Raspberry Pi OS에 Nginx&PHP를 설치하여 웹 서버를 구축웹 서비스용이 아니고, http 프로토콜 관계의 실험용이므로, 데이터베이스 서버의 인스톨은 하고 있지 않습니다. PHP는 필요 없을지도 모르지만, 일단. LAN 내의 독립 서버를 가정합니다. 그래서 보안이라든지 생각...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.