php-fpm 매개변수 구성 소개 및 Linux에서의 매개변수 최적화에 대한 자세한 설명
이 글에서는 주로 Linux에서 php-fpm의 일부 중요한 매개변수에 대한 중국어 상세 설명을 설명하고, 성능 측면에서 php-fpm의 매개변수 최적화를 자세히 소개합니다.
php-fpm.conf의 중요 매개변수에 대한 자세한 설명
pid = run/php-fpm.pid
#pid 설정, 기본값은 설치 디렉터리의 var/run/php-fpm.pid, 켜는 것이 좋습니다
error_log = log /php-fpm.log
#오류 로그, 기본값은 설치 디렉터리의 var/log/php-fpm.log입니다
log_level = 통지
#오류 수준은 경고(즉시 처리해야 함)입니다. ), error(오류 상황), warning(경고 상황), 통지(일반적인 중요 정보), 디버그(디버깅 정보). 기본값: 통지.
emergency_restart_threshold = 60
emergency_restart_interval = 60s
#php- Emergency_restart_interval에 설정된 값 내에서 SIGSEGV 또는 SIGBUS 오류가 있는 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에 대한 액세스를 허용합니다. 다른 호스트에서도 이 FPM 프로세스에 액세스할 수 있도록 nginx를 설정하려면 청취를 설정해야 합니다. 로컬로 액세스할 수 있는 IP입니다. 기본값은 임의입니다. 각 주소는 쉼표로 구분됩니다. 설정하지 않거나 비어 있으면 모든 서버에서 연결을 요청할 수 있습니다.
listen.owner = www
listen.group = www
listen.mode = 0666
#unix 소켓 설정 옵션 if 접속하려면 tcp를 사용하세요. 여기에 댓글을 달아주세요.
user = www
group = 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'이 특별한 이유로 실행 중인 스크립트를 중단하지 않는 경우 유용할 수 있습니다. 이 옵션을 'Off'로 설정하면 됩니다. 502에러가 자주 발생하는 경우 옵션입니다.
request_slowlog_timeout = 10s
#요청이 타임아웃 기간을 설정하면 해당 PHP 호출 스택 정보가 느린 로그에 완전히 기록됩니다. '0'으로 설정하면 '해제'를 의미합니다
slowlog = log/$pool.log.slow
#request_slowlog_timeout과 함께 사용되는 느린 요청 로깅
rlimit_files = 1024# 🎜🎜##파일 열기 설명자의 rlimit 제한을 설정합니다. 기본값: 기본 열기 핸들의 시스템 정의 값은 1024이며, ulimit -n을 사용하여 볼 수 있고 ulimit -n 2048로 수정할 수 있습니다.
rlimit_core = 0#최대 코어 제한 값을 설정합니다. 사용 가능한 값: '무제한', 0 또는 양의 정수 기본값: 시스템 정의.
chroot =#Chroot 디렉터리를 설정하지 않으면 chroot가 사용되지 않습니다. #🎜 🎜#
#시작 중에 자동으로 경로가 지정되는 시작 디렉터리를 설정합니다. 정의된 디렉터리는 절대 경로여야 합니다. 현재 디렉터리 또는 /directory(chrooting 시)
#실행 프로세스 중 stdout 및 stderr을 기본 오류 로그 파일로 리디렉션합니다. 설정되지 않은 경우 stdout 및 stderr은 FastCGI 규칙에 따라 /dev/null로 리디렉션됩니다. 기본값: 비어 있습니다. ;
dynamic은 php-fpm의 수를 의미합니다. 프로세스는 pm.start_servers에 지정된 수부터 시작하여 자동으로 증가하며 유휴 프로세스 수는 pm.min_spare_servers 이상입니다. 중복 프로세스 수가 pm.max_spare_serversstatic
을 초과하지 않도록 적절히 정리합니다. php-fpm 프로세스 수가 정적임을 나타냅니다. 프로세스는 항상 pm.max_children에 지정된 숫자이며 더 이상 증가하거나 감소하지 않습니다.pm.max_children = 300;
Static 동적에서 시작된 php-fpm 프로세스 수 mode
pm.start_servers = 20;
pm.min_spare_servers = 5; 동적 모드의 최소 php-fpm 프로세스 수
pm.max_spare_servers = 35;동적 모드의 최대 php-fpm 프로세스 수#🎜 🎜#pm이 다음과 같은 경우 정적이면 pm.max_children 매개변수만 적용됩니다. 시스템은 설정된 수의 php-fpm 프로세스를 엽니다
pm이 동적인 경우 pm.max_children 매개변수는 유효하지 않으며 다음 세 매개변수가 적용됩니다. php-fpm이 실행되기 시작하면 시스템은 pm.start_servers php-fpm 프로세스를 시작한 다음 시스템의 필요에 따라 pm.min_spare_servers와 pm.max_spare_servers 사이의 php-fpm 프로세스 수를 동적으로 조정합니다#🎜 🎜# 그렇다면 우리 서버에는 어떤 PM 방식이 더 좋을까요? 실제로 Apache와 마찬가지로 실행 중인 PHP 프로그램도 실행 후 메모리 누수가 발생합니다. 이는 php-fpm 프로세스가 처음에는 약 3M의 메모리만 차지하며 일정 기간 실행된 후에는 20-30M로 증가하는 이유이기도 합니다. 대용량 메모리(예: 8G 이상)가 있는 서버의 경우 실제로는 정적 max_children을 지정하는 것이 더 적절합니다. 이렇게 하면 추가 프로세스 번호 제어가 필요하지 않고 효율성이 향상되기 때문입니다. php-fpm 프로세스를 자주 전환하면 지연이 발생하므로 메모리가 충분히 크면 정적 효과가 더 좋습니다. 메모리/30M에 따라 수량을 얻을 수도 있습니다. 예를 들어 8GB 메모리를 100으로 설정하면 php-fpm에서 소비하는 메모리를 2G-3G로 제어할 수 있습니다. 메모리가 1G와 같이 약간 더 작은 경우에는 프로세스 수를 고정적으로 지정하는 것이 서버 안정성에 더 도움이 됩니다. 이렇게 하면 php-fpm이 충분한 메모리만 확보하고 다른 응용 프로그램에 사용할 수 있도록 소량의 메모리를 할당하여 시스템이 보다 원활하게 실행되도록 할 수 있습니다. nginx php-fpm 구성 과정에서 가장 큰 문제는 내부 누수입니다. 서버에 걸리는 부하가 크지 않은데 메모리 사용량이 급격히 늘어나서 메모리를 빠르게 잡아먹다가 스왑 파티션을 잡아먹기 시작합니다. 시스템이 빠르게 중단됩니다! 실제로 공식 소개에 따르면 php-cgi에는 메모리 누수가 없습니다. 각 요청이 완료된 후 php-cgi는 메모리를 회수하지만 이를 운영 체제에 해제하지는 않습니다. 이로 인해 많은 양의 메모리가 발생하게 됩니다. php-cgi가 차지하게 됩니다. 공식적인 해결책은 PHP_FCGI_MAX_REQUESTS의 값을 낮추는 것입니다. php-fpm을 사용하는 경우 해당 php-fpm.conf는 다시 시작하기 전에 전송되는 요청 수를 의미합니다. 이 스레드에서는 php-fpm이 자동으로 메모리를 해제할 수 있도록 이 값을 적절하게 낮춰야 합니다. 이는 대부분의 사람들이 인터넷에서 말하는 것처럼 51200이 아닙니다. 실제로 이와 관련된 또 다른 값인 max_children이 있습니다. time php -fpm으로 생성되는 프로세스 수, 실제 메모리 소비량은 각 요청에 사용되는 max_children*max_requests*memory입니다. 이를 기반으로 메모리 사용량을 추정할 수 있으므로 스크립트를 작성할 필요가 없습니다. 죽이다. request_terminate_timeout = 30; 최대 실행 시간은 php.ini에서도 구성할 수 있습니다(max_execution_time) request_slowlog_timeout = 2; 느린 로그 켜기 관심을 가질 만한 기사 #🎜 🎜#Laravel에서 데이터 마이그레이션 및 데이터 채우기를 위한 세부 단계
PHP 클로저는 외부 변수와 전역 키를 얻습니다. 단어 선언 변수의 차이점 설명
256M 메모리를 탑재한 VPS 등 메모리가 작은 서버의 경우, 20M 메모리를 기준으로 계산하더라도 10개의 php-cgi 프로세스가 200M의 메모리를 소비하게 되어 시스템이 충돌하게 됩니다. 정상이어야 합니다. 따라서 php-fpm 프로세스 수를 최대한 조절하도록 노력해야 하며, 다른 응용 프로그램이 차지하는 메모리를 대략적으로 파악한 후 고정적으로 작은 숫자를 할당하면 시스템이 더 안정적으로 됩니다. 또는 동적 모드를 사용하세요. 동적 모드는 중복된 프로세스를 종료하고 일부 메모리를 재활용하고 해제할 수 있으므로 메모리가 적은 서버나 VPS에서 사용하는 것이 좋습니다. 구체적인 최대량은 메모리/20M 기준으로 구해집니다. 예를 들어 512M VPS의 경우 pm.max_spare_servers를 20으로 설정하는 것이 좋습니다. pm.min_spare_servers는 서버의 부하에 따라 5~10 사이로 설정하는 것이 더 적합합니다.
4G 메모리 서버에서는 200이면 충분합니다(저의 1G 테스트 머신에서는 64가 가장 좋습니다. 최고의 가치를 얻으려면 스트레스 테스트를 사용하는 것이 좋습니다) # 🎜🎜#pm.max_requests = 10240;
slowlog = log/$pool.log.slow #rlimit_files = 1024; php-fpm으로 여는 파일 설명자 수 제한
위 내용은 php-fpm 매개변수 구성 소개 및 Linux에서의 매개변수 최적화에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP에서 Password_hash 및 Password_Verify 기능을 사용하여 보안 비밀번호 해싱을 구현해야하며 MD5 또는 SHA1을 사용해서는 안됩니다. 1) Password_hash는 보안을 향상시키기 위해 소금 값이 포함 된 해시를 생성합니다. 2) Password_verify 암호를 확인하고 해시 값을 비교하여 보안을 보장합니다. 3) MD5 및 SHA1은 취약하고 소금 값이 부족하며 현대 암호 보안에는 적합하지 않습니다.

PHP 유형은 코드 품질과 가독성을 향상시키기위한 프롬프트입니다. 1) 스칼라 유형 팁 : PHP7.0이므로 int, float 등과 같은 기능 매개 변수에 기본 데이터 유형을 지정할 수 있습니다. 2) 반환 유형 프롬프트 : 기능 반환 값 유형의 일관성을 확인하십시오. 3) Union 유형 프롬프트 : PHP8.0이므로 기능 매개 변수 또는 반환 값에 여러 유형을 지정할 수 있습니다. 4) Nullable 유형 프롬프트 : NULL 값을 포함하고 널 값을 반환 할 수있는 기능을 포함 할 수 있습니다.

PHP는 주로 절차 적 프로그래밍이지만 객체 지향 프로그래밍 (OOP)도 지원합니다. Python은 OOP, 기능 및 절차 프로그래밍을 포함한 다양한 패러다임을 지원합니다. PHP는 웹 개발에 적합하며 Python은 데이터 분석 및 기계 학습과 같은 다양한 응용 프로그램에 적합합니다.

PHP에서 전처리 문과 PDO를 사용하면 SQL 주입 공격을 효과적으로 방지 할 수 있습니다. 1) PDO를 사용하여 데이터베이스에 연결하고 오류 모드를 설정하십시오. 2) 준비 방법을 통해 전처리 명세서를 작성하고 자리 표시자를 사용하여 데이터를 전달하고 방법을 실행하십시오. 3) 쿼리 결과를 처리하고 코드의 보안 및 성능을 보장합니다.

PHP와 Python은 고유 한 장점과 단점이 있으며 선택은 프로젝트 요구와 개인 선호도에 달려 있습니다. 1.PHP는 대규모 웹 애플리케이션의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 데이터 과학 및 기계 학습 분야를 지배합니다.

PHP는 MySQLI 및 PDO 확장 기능을 사용하여 데이터베이스 작업 및 서버 측 로직 프로세싱에서 상호 작용하고 세션 관리와 같은 기능을 통해 서버 측로 로직을 처리합니다. 1) MySQLI 또는 PDO를 사용하여 데이터베이스에 연결하고 SQL 쿼리를 실행하십시오. 2) 세션 관리 및 기타 기능을 통해 HTTP 요청 및 사용자 상태를 처리합니다. 3) 트랜잭션을 사용하여 데이터베이스 작업의 원자력을 보장하십시오. 4) SQL 주입 방지, 디버깅을 위해 예외 처리 및 폐쇄 연결을 사용하십시오. 5) 인덱싱 및 캐시를 통해 성능을 최적화하고, 읽을 수있는 코드를 작성하고, 오류 처리를 수행하십시오.

PHP는 동적 웹 사이트를 구축하는 데 사용되며 해당 핵심 기능에는 다음이 포함됩니다. 1. 데이터베이스와 연결하여 동적 컨텐츠를 생성하고 웹 페이지를 실시간으로 생성합니다. 2. 사용자 상호 작용 및 양식 제출을 처리하고 입력을 확인하고 작업에 응답합니다. 3. 개인화 된 경험을 제공하기 위해 세션 및 사용자 인증을 관리합니다. 4. 성능을 최적화하고 모범 사례를 따라 웹 사이트 효율성 및 보안을 개선하십시오.

PHP는 웹 개발 및 빠른 프로토 타이핑에 적합하며 Python은 데이터 과학 및 기계 학습에 적합합니다. 1.PHP는 간단한 구문과 함께 동적 웹 개발에 사용되며 빠른 개발에 적합합니다. 2. Python은 간결한 구문을 가지고 있으며 여러 분야에 적합하며 강력한 라이브러리 생태계가 있습니다.
