php-fpm.conf vigtige parametre forklares i detaljer
pid = run/php-fpm.pid #pid设置 anbefales det som standard at aktivere var/run/php-fpm.pid i installationsmappen
error_log = log/php-fpm.log #错误日志 er standarden var/log/php-fpm.log i installationsmappen
log_level = meddelelse #错误级别. De tilgængelige niveauer er: alarm, fejl, advarsel, meddelelse, fejlsøgning. Standard: advarsel.
emergency_restart_threshold = 60 emergency_restart_interval = 60'erne # angiver, at hvis antallet af php-cgi-processer med SIGSEGV- eller SIGBUS-fejl overstiger emergency_restart_threshold inden for emergency_restart_interval-værdien, vil php-fpm blive genstartet uden problemer. Disse to muligheder forbliver generelt standard.
process_control_timeout = 0 #设置子进程接受主进程复用信号的超时时间. Tilgængelige enheder: s (sekunder), m (minutter), h (timer) eller d (dage) Standardenheder: s (sekunder). Standard: 0.
daemonize = ja #后台执行fpm er standardværdien ja, og hvis du vil fejlfinde, kan du ændre den til nej. I FPM kan forskellige indstillinger bruges til at køre flere procespuljer. Disse indstillinger kan sættes individuelt for hver procespulje.
lyt = 127.0.0.1:9000 #fpm监听端口, altså adressen behandlet af PHP i nginx, er generelt standardværdien. De tilgængelige formater er: 'ip:port', 'port', '/path/to/unix/socket'. Hver procespulje skal oprettes.
listen.backlog = -1 #backlog数, -1 betyder ubegrænset, bestemt af operativsystemet, bare kommenter denne linje. Reference: http://www.3gyou.cc/?p=41
listen.allowed_clients = 127.0.0.1 #允许访问FastCGI进程的IP sæt enhver til ikke at begrænse IP; hvis du vil sætte nginx for andre værter til at få adgang til denne FPM-proces, skal du sætte den IP-adresse, der kan tilgås på bekostning af lytte. Standardværdien er en hvilken som helst. Hver adresse adskilles af et komma. Hvis den ikke er sat eller er tom, må enhver server anmode om en forbindelse
listen.owner = www listen.group = www listen.mode = 0666 #unix socket-indstilling, hvis du bruger TCP til at få adgang, kan du kommentere her.
bruger = www gruppe = www #启动进程的帐户和组
pm = dynamisk #对于专用服务器, pm kan sættes til statisk. #如何控制子进程 er mulighederne statiske og dynamiske. Hvis statisk er valgt, specificeres et fast antal børneprocesser af pm.max_children. Hvis dynamisk vælges, bestemmes det af følgende parametre: pm.max_children #, det maksimale antal børneprocesser pm.start_servers #, antallet af processer ved opstart pm.min_spare_servers #, garanterer et minimum antal inaktive processer, og opretter en ny børneproces, hvis den inaktive proces er mindre end denne værdi pm.max_spare_servers#, sørg for det maksimale antal inaktive processer, hvis den inaktive proces er større end denne værdi, vil dette blive renset
pm.max_requests = 1000 #设置每个子进程重生之前服务的请求数. Dette er meget nyttigt for tredjepartsmoduler, der kan have hukommelseslækager. Hvis den er sat til '0', accepteres anmodningen altid. Svarende til PHP_FCGI_MAX_REQUESTS miljøvariabler. Standard: 0.
pm.status_path = /status #FPM状态页面的网址. Hvis du ikke har indstillingerne, kan du ikke få adgang til statussiden. Standard: ingen. Munin-overvågning vil blive brugt
ping.path = /ping #FPM监控页面的ping网址. Hvis du ikke har indstillingerne, kan du ikke få adgang til ping-siden. Denne side bruges til eksternt at opdage, om FPM'en er aktiv og kan besvare forespørgsler. Bemærk, at den skal starte med en skråstreg (/).
ping.response = pong #用于定义ping请求的返回相应. Returnerer tekst i tekst-/klarformat for HTTP 200. Standard: pong.
request_terminate_timeout = 0 #设置单个请求的超时中止时间. Denne mulighed kan være nyttig for scripts, der ikke afbrydes af en særlig grund php.ini 'max_execution_time' i indstillingerne. Sat til '0' betyder 'Slukket'. Du kan prøve at ændre denne mulighed, når 502-fejl ofte opstår.
request_slowlog_timeout = 10'ere #当一个请求该设置的超时时间后 vil den tilsvarende PHP-kaldsstak-information blive skrevet til slowlogs. Sat til '0' betyder 'Slukket'
slowlog = log/$pool.log.slow #慢请求的记录日志, brug med request_slowlog_timeout
rlimit_files = 1024 #设置文件打开描述符的rlimit限制. Standardværdi: Standard åbent håndtag er 1024, som kan ses med ulimit -n og ændres med ulimit -n 2048.
rlimit_core = 0 #设置核心rlimit最大限制值. Tilgængelige værdier: 'ubegrænset', 0 eller positive heltal. Standardværdi: Systemdefineret værdi.
chroot = #启动时的Chroot目录. Den definerede mappe skal være en absolut sti. Hvis der ikke er nogen indstilling, bruges chroot ikke.
chdir = #设置启动目录 sendes Chdir automatisk til den mappe, når den starter. Den definerede mappe skal være en absolut sti. Standard: aktiel mappe eller/mappe (når chrootet)
catch_workers_output = ja #重定向运行过程中的stdout和stderr到主要的错误日志文件中. Hvis det ikke er sat, vil stdout og stderr blive omdirigeret til /dev/null i henhold til FastCGI's regler. Standard: Null.
php-fpm parameterjustering
pm = dynamisk; Angiver hvilken metode til procesmængdestyring der anvendes
Dynamisk betyder, at antallet af PHP-FPM-processer er dynamisk, antallet angives pm.start_servers i starten, hvis der er flere forespørgsler, vil det automatisk stige for at sikre, at antallet af inaktive processer ikke er mindre end pm.min_spare_servers, og hvis antallet af processer er stort, vil det også blive ryddet op tilsvarende for at sikre, at antallet af overskydende processer ikke overstiger pm.max_spare_servers
Statisk betyder, at antallet af processer i php-fpm er statisk, og antallet af processer altid er det antal, der er angivet af pm.max_children, og ikke stiger eller falder
pm.max_børn = 300; Antallet af php-fpm-processer, der er aktiveret i statisk tilstand pm.start_servers = 20; Antallet af startende php-fpm-processer i dynamisk tilstand pm.min_spare_servers = 5; Det mindste antal php-fpm-processer i dynamisk tilstand pm.max_spare_servers = 35; Det maksimale antal php-fpm-processer i dynamisk tilstand
Hvis pm er statisk, er kun parameteren pm.max_children gyldig. Systemet åbner et fast antal php-fpm-processer
Hvis PM er dynamisk, er parameteren pm.max_children ugyldig, og de sidste tre parametre træder i kraft. Systemet starter pm.start_servers php-fpm-processer i starten af php-fpm-kørslen og justerer derefter dynamisk antallet af php-fpm-processer mellem pm.min_spare_servers og pm.max_spare_servers efter systemets behov
Så, hvilken PM-metode er bedst at vælge til vores server? Faktisk, ligesom Apache, vil kørsel af PHP-programmer mere eller mindre have hukommelseslækageproblemer efter udførelse. Derfor optager en php-fpm-proces kun omkring 3 millioner hukommelse i starten, og efter at have kørt et stykke tid, vil den stige til 20-30 millioner.
For servere med stor hukommelse (såsom 8G eller mere) er det faktisk mere hensigtsmæssigt at specificere statisk max_children, da dette ikke kræver yderligere proceskontrol og forbedrer effektiviteten. Fordi hyppig udskiftning af php-fpm-processer også vil forsinke tiden, er det bedre at slå statiske effekter til, når hukommelsen er stor nok. Mængden kan også opnås i forhold til hukommelse/30M, for eksempel kan 8 GB hukommelse sættes til 100, og så kan hukommelsesforbruget af php-fpm kontrolleres i 2G-3G. Hvis hukommelsen er en smule mindre, som for eksempel 1G, er det mere gunstigt for serverens stabilitet at angive antallet af statiske processer. Dette sikrer, at php-fpm kun får nok hukommelse og allokerer en lille mængde hukommelse til andre applikationer, hvilket vil gøre systemet mere gnidningsfrit.
For en server med lille hukommelse, såsom en VPS med 256 millioner hukommelse, selv hvis den beregnes ud fra en hukommelsesmængde på 20 mio. og 10 php-cgi-processer, vil forbruge 200 millioner hukommelse, så bør systemnedbruddet være normalt. Derfor bør du forsøge at kontrollere antallet af php-fpm-processer, og efter nogenlunde at have præciseret hukommelsen brugt af andre applikationer, specificere et statisk lille antal for det, hvilket vil gøre systemet mere stabilt. Eller brug den dynamiske metode, fordi den dynamiske metode vil afslutte den redundante proces og genvinde noget hukommelse, så det anbefales at bruge den på servere eller VPS med mindre hukommelse. Den specifikke maksimale mængde opnås baseret på hukommelse/20M. For eksempel anbefales det for en 512M VPS at sætte pm.max_spare_servers til 20. Hvad angår pm.min_spare_servers, anbefales det at sætte den efter serverens belastning, og den mere passende værdi er mellem 5~10.
200 på en server med 4G-hukommelse er fint (min 1G testmaskine, 64 er den bedste, det anbefales at bruge stresstest for at få mest muligt for pengene)
pm.max_requests = 10240;
Det største problem i nginx php-fpm-konfigurationsprocessen er det interne lækageproblem: belastningen på serveren er ikke stor, men hukommelsesbesættelsen stiger hurtigt, opsluger hurtigt hukommelsen og begynder derefter at æde swap-partitionen, og systemet hænger hurtigt! Faktisk har php-cgi ifølge den officielle introduktion ikke hukommelseslækage, og php-cgi vil genvinde hukommelse efter hver anmodning, men vil ikke blive frigivet til operativsystemet, hvilket vil medføre, at en stor mængde hukommelse bliver optaget af php-cgi.
Den officielle løsning er at sænke værdien af PHP_FCGI_MAX_REQUESTS; hvis php-fpm bruges, er den tilsvarende php-fpm.conf max_requests, hvilket betyder, hvor mange forespørgsler der sendes for at genstarte tråden, vi skal sænke denne værdi passende, så php-fpm automatisk frigør hukommelse, ikke de fleste af de 51200 på internettet osv., faktisk er der en anden værdi relateret til det max_ Børn, det er sådan mange processer vil blive etableret hver gang PHP-FPM, så det faktiske hukommelsesforbrug er max_children*max_requests* Hver anmodning bruger hukommelse, og ud fra dette kan vi estimere hukommelsesforbruget, så der ikke er behov for at skrive scripts for at dræbe.
request_terminate_timeout = 30;
Maksimal eksekveringstid, konfigurerbar i php.ini (max_execution_time)
request_slowlog_timeout = 2; Tænd for langsomme træstammer slowlog = log/$pool.log.slow; Langsom logbane
rlimit_files = 1024; Tilføjet en begrænsning på php-fpm for at åbne filbeskrivelser
|