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
|