Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 11218|Svare: 4

PHP-FPM-parameterkonfigurasjon og justering

[Kopier lenke]
Publisert på 26.07.2017 09:20:54 | | |
php-fpm.conf viktige parametere forklares i detalj

pid = run/php-fpm.pid
#pid设置 anbefales det å aktivere var/run/php-fpm.pid i installasjonsmappen som standard

error_log = log/php-fpm.log
#错误日志 er standarden var/log/php-fpm.log i installasjonsmappen

log_level = varsel
#错误级别. De tilgjengelige nivåene er: varsling, feil, advarsel, varsel, feilsøking. Standard: varsel.

emergency_restart_threshold = 60
emergency_restart_interval = 60-tallet
# indikerer at hvis antallet php-cgi-prosesser med SIGSEGV- eller SIGBUS-feil overstiger emergency_restart_threshold innenfor emergency_restart_interval-verdien, vil php-fpm bli restartet på nytt med verdighet. Disse to alternativene forblir vanligvis standard.

process_control_timeout = 0
#设置子进程接受主进程复用信号的超时时间. Tilgjengelige enheter: s (sekunder), m (minutter), h (timer) eller d (dager) Standardenheter: s (sekunder). Standard: 0.

daemonize = ja
#后台执行fpm er standardverdien ja, og hvis du vil feilsøke, kan du endre den til nei. I FPM kan ulike innstillinger brukes for å kjøre flere prosesspooler. Disse innstillingene kan settes individuelt for hver prosesspool.

lytt = 127.0.0.1:9000
#fpm监听端口, det vil si adressen som behandles av PHP i nginx, er vanligvis standardverdien. De tilgjengelige formatene er: 'ip:port', 'port', '/path/to/unix/socket'. Hver prosesspool må settes opp.

listen.backlog = -1
#backlog数, -1 betyr ubegrenset, bestemt av operativsystemet, bare kommenter denne linjen. Referanse: http://www.3gyou.cc/?p=41

listen.allowed_clients = 127.0.0.1
#允许访问FastCGI进程的IP, sett alle til ikke å begrense IP, hvis du vil sette nginx til andre verter for å få tilgang til denne FPM-prosessen, må du sette IP-adressen som kan nås på bekostning av lytt. Standardverdien er hvilken som helst. Hver adresse er adskilt med et komma. Hvis den ikke er satt eller er tom, har enhver server lov til å be om en tilkobling

listen.eier = www
listen.group = www
listen.mode = 0666
#unix socket-innstilling, hvis du bruker TCP for å få tilgang, kan du kommentere her.

bruker = www
gruppe = www
#启动进程的帐户和组

pm = dynamisk #对于专用服务器, pm kan settes til statisk.
#如何控制子进程 er alternativene statiske og dynamiske. Hvis statisk er valgt, spesifiseres et fast antall barneprosesser av pm.max_children. Hvis dynamisk er valgt, bestemmes den av følgende parametere:
pm.max_children #, det maksimale antallet barneprosesser
pm.start_servers #, antall prosesser ved oppstart
pm.min_spare_servers #, garantere et minimum antall inaktive prosesser, og opprette en ny barneprosess hvis den inaktive prosessen er mindre enn denne verdien
pm.max_spare_servers#, sørg for maksimalt antall inaktive prosesser, hvis den inaktive prosessen er større enn denne verdien, vil dette bli renset

pm.max_forespørsler = 1000
#设置每个子进程重生之前服务的请求数. Dette er svært nyttig for tredjepartsmoduler som kan ha minnelekkasjer. Hvis den settes til '0', blir forespørselen alltid akseptert. Tilsvarende PHP_FCGI_MAX_REQUESTS miljøvariabler. Standard: 0.

pm.status_path = /status
#FPM状态页面的网址. Hvis du ikke har innstillingene, får du ikke tilgang til statussiden. Standard: ingen. Munin-overvåking vil bli brukt

ping.path = /ping
#FPM监控页面的ping网址. Hvis du ikke har innstillingene, får du ikke tilgang til ping-siden. Denne siden brukes til å eksternt oppdage om FPM-en er aktiv og kan svare på forespørsler. Merk at den må starte med skråstrek (/).

ping.response = pong
#用于定义ping请求的返回相应. Returnerer tekst i tekst-/klarformat for HTTP 200. Standard: pong.

request_terminate_timeout = 0
#设置单个请求的超时中止时间. Dette alternativet kan være nyttig for skript som ikke avbrytes av en spesiell grunn php.ini 'max_execution_time' i innstillingene. Satt til '0' betyr 'Av'. Du kan prøve å endre dette alternativet når 502-feil ofte oppstår.

request_slowlog_timeout = 10
#当一个请求该设置的超时时间后 vil den tilsvarende PHP-kallstakkinformasjonen skrives til den langsomme loggen. Satt til '0' betyr 'Av'

slowlog = log/$pool.log.slow
#慢请求的记录日志, bruk med request_slowlog_timeout

rlimit_files = 1024
#设置文件打开描述符的rlimit限制. Standardverdi: Standard åpen håndtak er 1024, som kan vises med ulimit -n og modifiseres med ulimit -n 2048.

rlimit_core = 0
#设置核心rlimit最大限制值. Tilgjengelige verdier: 'ubegrenset', 0 eller positive heltall. Standardverdi: Systemdefinert verdi.

chroot =
#启动时的Chroot目录. Den definerte katalogen må være en absolutt sti. Hvis det ikke finnes noen innstilling, brukes ikke chroot.

chdir =
#设置启动目录 sendes Chdir automatisk til den mappen når den starter. Den definerte katalogen må være en absolutt sti. Standard: nåværende katalog, eller/katalog (når chrootet)

catch_workers_output = ja
#重定向运行过程中的stdout和stderr到主要的错误日志文件中. Hvis de ikke settes, vil stdout og stderr bli omdirigert til /dev/null i henhold til FastCGIs regler. Standard: Null.



PHP-FPM-parameterjustering

pm = dynamisk; Indikerer hvilken metode for mengdehåndtering av prosessen som brukes

Dynamisk betyr at antallet PHP-FPM-prosesser er dynamisk, antallet spesifiseres pm.start_servers i starten, hvis det er flere forespørsler, vil det automatisk øke for å sikre at antallet inaktive prosesser ikke er færre enn pm.min_spare_servers, og hvis antallet prosesser er stort, vil det også bli ryddet opp tilsvarende for å sikre at antallet overflødige prosesser ikke overstiger pm.max_spare_servers

Statisk betyr at antall prosesser i php-fpm er statisk, og antallet prosesser er alltid det antallet som pm.max_children spesifiserer, og ikke øker eller minker

pm.max_barn = 300; Antall php-fpm-prosesser som er aktivert i statisk modus
pm.start_servers = 20; Antall startende php-fpm-prosesser i dynamisk modus
pm.min_spare_servers = 5; Minimum antall php-fpm-prosesser i dynamisk modus
pm.max_spare_servers = 35; Maksimalt antall php-fpm-prosesser i dynamisk modus

Hvis pm er statisk, er kun parameteren pm.max_children gyldig. Systemet åpner et fast antall php-fpm-prosesser

Hvis PM er dynamisk, er parameteren pm.max_children ugyldig, og de tre siste parameterne trer i kraft. Systemet starter pm.start_servers php-fpm-prosesser i starten av php-fpm-kjøringen, og justerer deretter dynamisk antall php-fpm-prosesser mellom pm.min_spare_servers og pm.max_spare_servers etter systemets behov

Så, hvilken PM-metode er best å velge for serveren vår? Faktisk, som Apache, vil kjøring av PHP-programmer mer eller mindre ha problemer med minnelekkasje etter kjøring. Dette er grunnen til at en php-fpm-prosess bare opptar omtrent 3 millioner minne i starten, og etter å ha kjørt en stund, vil den stige til 20-30 millioner.

For servere med stort minne (som 8G eller mer) er det faktisk mer hensiktsmessig å spesifisere statisk max_children, siden dette ikke krever ekstra prosesskontroll og forbedrer effektiviteten. Siden hyppige bytter av php-fpm-prosesser også vil lagge tiden, er det bedre å slå på statiske effekter når minnet er stort nok. Mengden kan også oppnås i henhold til minne/30M, for eksempel kan 8 GB minne settes til 100, deretter kan minnet som brukes av php-fpm kontrolleres i 2G-3G. Hvis minnet er litt mindre, for eksempel 1G, er det mer gunstig for serverens stabilitet å spesifisere antall statiske prosesser. Dette sikrer at php-fpm kun får nok minne, og allokerer en liten mengde minne til andre applikasjoner, noe som gjør at systemet kjører jevnere.

For en server med lite minne, som en VPS med 256 millioner minne, selv om det beregnes ut fra en minnemengde på 20 millioner, vil 10 php-cgi-prosesser bruke 200 millioner minner, da bør systemkrasjen være normal. Derfor bør du prøve å kontrollere antall php-fpm-prosesser, og etter å ha klargjort hvor mye minne andre applikasjoner opptar, spesifisere et statisk lite antall for det, noe som vil gjøre systemet mer stabilt. Eller bruk den dynamiske metoden, fordi den dynamiske metoden vil avslutte den redundante prosessen og gjenerobre noe minne, så det anbefales å bruke den på servere eller VPS med mindre minne. Den spesifikke maksimale mengden oppnås basert på minne/20M. For eksempel, for en 512M VPS anbefales det å sette pm.max_spare_servers til 20. Når det gjelder pm.min_spare_servers, anbefales det å sette den etter serverens belastning, og den mer passende verdien er mellom 5~10.

200 på en server med 4G-minne er greit (min 1G testmaskin, 64 er best, det anbefales å bruke stresstest for å få best mulig verdi)

pm.max_requests = 10240;

Det største problemet i nginx php-fpm-konfigurasjonsprosessen er det interne lekkasjeproblemet: belastningen på serveren er ikke stor, men minneoppdraget øker raskt, spiser raskt opp minnet og begynner å spise opp swap-partisjonen, og systemet henger seg raskt! Faktisk, ifølge den offisielle introduksjonen, har ikke php-cgi minnelekkasje, og php-cgi vil gjenerobre minne etter hver forespørsel, men vil ikke bli frigitt til operativsystemet, noe som vil føre til at en stor mengde minne blir opptatt av php-cgi.


Den offisielle løsningen er å senke verdien på PHP_FCGI_MAX_REQUESTS, hvis php-fpm brukes, er tilsvarende php-fpm.conf max_requests, noe som betyr hvor mange forespørsler som skal sendes for å starte tråden på nytt, vi må senke denne verdien hensiktsmessig, slik at php-fpm automatisk frigjør minne, ikke de fleste av 51200 på Internett osv., faktisk finnes det en annen verdi knyttet til det max_ Barn, dette er hvordan mange prosesser vil bli etablert hver gang PHP-FPM, slik at det faktiske minneforbruket er max_children*max_requests* Hver forespørsel bruker minne, ifølge dette kan vi estimere minnebruket, så det er ikke nødvendig å skrive skript for å drepe.

request_terminate_timeout = 30;

Maksimal utførelsestid, konfigurerbar i php.ini (max_execution_time)

request_slowlog_timeout = 2; Slå på langsomme stokker
slowlog = log/$pool.log.slow; Langsom tømmerbane

rlimit_files = 1024; La til en begrensning på php-fpm for å åpne filbeskrivelser





Foregående:Alibaba Cloud SLB lastbalansering HTTP helsesjekk feilanalyse
Neste:DZ x3.4-filverifisering mangler filer
 Vert| Publisert på 28.11.2021 13:42:00 |
[Øv] Sjekk php-fpm statusinformasjon via Nginx
https://www.itsvse.com/thread-10180-1-1.html
 Vert| Publisert på 19.12.2021 10:48:43 |
 Vert| Publisert på 16.01.2022 15:26:55 |
[root@old_server conf]# cat /alidata/server/php/etc/php-fpm.conf | grep max_spare_servers
;             pm.max_spare_servers – det maksimale antallet barn i 'idle'
; Standardverdi: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
pm.max_spare_servers = 35
[root@old_server conf]# cat /alidata/server/php/etc/php-fpm.conf | grep min_spare_servers
;             pm.min_spare_servers – minimum antall barn i 'ledig'
; Standardverdi: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
pm.min_spare_servers = 5
[root@old_server conf]# cat /alidata/server/php/etc/php-fpm.conf | grep start_servers
;             pm.start_servers – antall barn som skapes ved oppstart.
pm.start_servers = 20
[root@old_server conf]# cat /alidata/server/php/etc/php-fpm.conf | grep max_requests
pm.max_requests = 10240
[root@old_server conf]# cat /alidata/server/php/etc/php-fpm.conf | grep request_slowlog_timeout
; Merk: slowlog er obligatorisk hvis request_slowlog_timeout er satt
; request_slowlog_timeout = 0
[root@old_server conf]# cat /alidata/server/php/etc/php-fpm.conf | grep slowlog
; - 'slowlog'
; Merk: slowlog er obligatorisk hvis request_slowlog_timeout er satt
slowlog = /alidata/log/php/$pool.log.slow
; dumpet til filen 'slowlog'. En verdi på '0' betyr 'av'.
; request_slowlog_timeout = 0
[root@old_server conf]# cat /alidata/server/php/etc/php-fpm.conf | grep rlimit
; Sett åpen fil-deskriptor rlimit for masterprosessen.
; rlimit_files = 1024
; Sett maks kjernestørrelse for masterprosessen.
; rlimit_core = 0
; Sett åpen fil-deskriptor rlimit.
; rlimit_files = 1024
; Sett maks kjernestørrelsesgrense.
; rlimit_core = 0
[root@old_server konferanse] #
 Vert| Publisert på 16.01.2022 16:54:04 |
request_terminate_timeout = 10-tallet

Standardverdien er 0 sekunder, noe som betyr at PHP-skriptet fortsetter å kjøre. På denne måten, når alle php-cgi-prosessene er opptatt, kan ikke Nginx+PHP WebServer lenger håndtere nye PHP-forespørsler, og Nginx vil returnere en "502 Bad Gateway" til brukeren. request_terminate_timeout = 30 sekunder kan brukes
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com