Sammenligning af PHP-handlere viser tydeligt, hvordan CGI, PHP-FPM og LSAPI styrer udførelsen af PHP-scripts og dermed karakteriserer latency, isolation og RAM-krav i hosting. Jeg forklarer forskellene på en praktisk måde, kategoriserer dem i forhold til arbejdsbelastninger og giver anbefalinger til valg og konfiguration i den daglige drift.
Centrale punkter
- YdelseLSAPI fører i haleforsinkelser, PHP-FPM leverer meget konstante svartider.
- SikkerhedCGI adskiller strengt, PHP-FPM isolerer med pools, LSAPI indkapsler pr. bruger.
- RessourcerLSAPI sparer RAM, PHP-FPM forbliver effektiv, CGI genererer overhead.
- KompatibilitetPHP-FPM passer til Apache/Nginx, LSAPI skinner med LiteSpeed.
- ØvelseTil CMS og butikker bruger jeg for det meste PHP-FPM; meget trafik har ofte gavn af LSAPI.
Grundlæggende om PHP-handlere
En PHP-håndtering forbinder webserveren med PHP-fortolker. CGI starter en ny proces for hver anmodning og opnår dermed en meget ren adskillelse mellem konti. Denne adskillelse koster tid, fordi hver anmodning genindlæser udvidelser og konfiguration. PHP-FPM holder arbejdere ved lige og fordeler anmodninger til puljer, hvilket reducerer opstartsomkostningerne og holder ventetiden lav. LSAPI er dybt integreret med LiteSpeed og bruger meget lette, langtidsholdbare processer til Høj effektivitet.
Mod_php integrerer PHP direkte i webserveren, men isoleringen er svag. Jeg foretrækker moderne handlere, fordi de minimerer fejlkilder og holder platformen mere stabil under belastning. Hvis du hoster mange brugere på ét system, er det en klar fordel med separate Brugerkontekster. Det er netop her, at FPM-pools og LSAPI kommer til deres ret. CGI er stadig en sikker, men langsom løsning til meget små sites og særlige testscenarier.
Sammenligningstabel: Styrker og anvendelsesscenarier
Følgende tabel opsummerer kernefunktionerne og tildeler dem til typiske arbejdsbelastninger. Jeg bruger den som en hurtig beslutningsstøtte til hosting af php-opsætninger med CMS, butikker eller API'er. Bemærk, at den faktiske ydelse også afhænger af caching, lagring og netværksprofil. Ikke desto mindre giver oversigten et solidt udgangspunkt for et første valg. Jeg finjusterer derefter konfigurationen baseret på specifikke belastningsprofiler og Målte værdier.
| handler | Ydelse | Sikkerhed | RAM-forbrug | Skalerbarhed | Velegnet til |
|---|---|---|---|---|---|
| CGI | Lav | Meget høj | Høj | Lav | Test, statiske eller sjældent besøgte sider |
| PHP-FPM | Meget høj | Høj | Lav | Høj | Delt hosting, CMS, API'er |
| LSAPI | Højeste | Middel til høj (pr. bruger) | Meget lav | Meget høj | Høj trafik, e-handel, samtidighed |
CGI scorer med Adskillelse, men lider under opstartsomkostninger for processen. PHP-FPM giver det bedste forhold mellem latency, throughput og isolation på systemer med Apache eller Nginx. LSAPI leverer meget lave tail latencies med stor konkurrence på LiteSpeed-stakke. Hvis du ikke bruger en LiteSpeed-server, tilbyder FPM den bredeste understøttelse. Til meget små websteder holder jeg mig til enkle opsætninger; til voksende projekter skifter jeg til FPM eller LSAPI.
Ydeevne under belastning: latenstid og gennemløb
Blandt den stigende konkurrence er P95/P99-forsinkelser og Stabilitet af gennemstrømningen. LSAPI har de højeste belastninger med overraskende ensartede svartider. PHP-FPM følger tæt efter og reagerer meget godt på pool-tuning, for eksempel med dynamiske procesnumre. CGI mister mærkbart hastighed, så snart der kommer mange korte anmodninger. For mere detaljerede målinger henvises til min Sammenligning af ydeevne, som dækker typiske CMS- og shop-arbejdsbelastninger.
Jeg kombinerer konsekvent FPM eller LSAPI med OPcache, så bytekode ikke konstant genereres på ny. Desuden reducerer reverse proxy caches antallet af PHP-hits for tilbagevendende indhold. En jobkø er værd at bruge til beregningsintensive opgaver, så frontend-anmodninger forbliver hurtige. Hvis du vil opfange sporadiske spidsbelastninger, skal du bruge kortvarig burst-skalering via ekstra FPM-arbejdere. Dette holder tail latencies inden for grænserne, og Svartider konsekvent.
Sikkerhed og isolation i delt hosting
Hvad der tæller i flerbrugermiljøer Isolering mindst lige så meget som hastighed. CGI opnår en meget ren adskillelse gennem processer pr. forespørgsel, men med en masse overhead. PHP-FPM isolerer pr. pool og tillader hårde grænser for hukommelse, udførelsestid og antal processer. LSAPI tildeler også processer til konti, men er bundet til LiteSpeed-stakken i detaljer. Hvis du vil kategorisere risici, er det bedst at læse min artikel om Pool risiko med FPM og sætter klare grænser.
Jeg opretter en separat konto for hver konto. Pool med sit eget UID/GID og restriktive rettigheder. Det begrænser rækkevidden af mulige angreb og forhindrer defekte scripts i at se eksterne data. Det omfatter grænser for hukommelse, maksimale anmodninger pr. worker og timeouts. Regelmæssige opdateringer og sikre filtilladelser afrunder konceptet. Jeg minimerer antallet af admin-scripts, der er åbent tilgængelige på netværket, eller beskytter dem med Godkendelse.
Ressourceforbrug og RAM-styring
RAM bestemmer ofte Omkostninger og tæthed pr. server. LSAPI scorer her med et meget lille fodaftryk pr. proces og økonomiske kontekstskift. PHP-FPM forbliver også effektiv, hvis jeg opretter puljer dynamisk og dimensionerer grænserne korrekt. CGI spilder hukommelse på grund af hyppig genindlæsning af udvidelser og er derfor næppe egnet til dynamiske projekter. Hvis du hoster mange konti, giver FPM eller LSAPI dig betydeligt flere reserver pr. node og holder Samlede omkostninger Planlægbar.
Jeg måler regelmæssigt peak-RAM og observerer fordelingen i løbet af dagen. Peaks indikerer for lavt antal arbejdere eller ugunstige caching-strategier. Jeg reducerer efterspørgslen med en finere puljedimensionering og målrettet OPcache-tuning. Det reducerer swap-risici og forhindrer uforudsigelige latency-udslag. På overfyldte værter flytter jeg individuelle Steder på sine egne noder, før den samlede ydelse lider.
Kompatibilitet med Apache, Nginx og LiteSpeed
Valget af webserver styrer beslutningen på handler. PHP-FPM fungerer fremragende bag Nginx og kan forbindes rent til Apache via proxy. I Apache-miljøer anbefaler jeg mpm_event, keep-alive-tuning og en stabil proxy-konfiguration. LSAPI udfolder sit fulde potentiale med LiteSpeed og læser .htaccess-filer effektivt. De, der allerede bruger LiteSpeed, får ofte den sidste smule ydelse med LSAPI. Strøm ud.
Til statisk indhold bruger jeg Nginx eller LiteSpeed direkte fra webserverens cache. PHP behandler kun det, der skal forblive dynamisk. Denne adskillelse reducerer belastningen på håndteringen og sparer CPU-tid. Som en bivirkning øges TTFB-konsistensen med tilbagevendende sideanmodninger. Dette holder frontends responsive, selv når Backends er under pres.
Bedste praksis for PHP FPM-pools
Jeg starter med en konservativ Indretning af pool per site og måler reelle spidsbelastninger. Derefter justerer jeg pm, pm.max_children, pm.start_servers og pm.max_requests. Puljer, der er for små, får forespørgsler til at vente, puljer, der er for store, spiser RAM og genererer kontekstskift. Til WordPress, WooCommerce eller TYPO3 vælger jeg normalt dynamisk eller ondemand og regulerer grænserne stramt. Detaljer om pm.max_children kan findes i min guide pm.max_børn opsummeret.
Jeg sætter grænser som memory_limit og max_execution_time pr. pool. Det forhindrer individuelle scripts i at blokere ressourcer eller komme ud af kontrol. request_terminate_timeout beskytter mod hængende processer, som ellers ville hobe sig op. max_input_vars og upload_max_filesize er fornuftigt sikret, afhængigt af projektet. Dette holder puljer kontrollerbar og værten er stabil.
Caching og OPcache i praksis
For mig er OPcache en del af enhver Installation af PHP. Jeg aktiverer den, tjekker størrelsen og overvåger hitraten. Til mange implementeringer indstiller jeg file_cache_only og tune revalidate_freq, så implementeringer træder i kraft hurtigt. Jeg bruger også reverse proxy-cacher og sidecache-plugins i CMS til at reducere PHP-hitraten. Jo færre forespørgsler, der rent faktisk ender i PHP, jo bedre skalerer det. alt.
De, der bruger sessioner på serversiden intensivt, har ofte gavn af Redis. Jeg regulerer TTL'er og styrer nøje hukommelsesgrænser. For fuldsidecache overvejer jeg cachenøgler og ugyldiggørelsesstrategier, så butikker leverer korrekt efter pris- eller lagerændringer. En klar cache-plan sparer CPU, RAM og tid. Samspillet mellem OPcache, proxy-cache og Cache til applikationer bestemmer i sidste ende den opfattede hastighed.
Beslutningsmatrix: Hvilken behandler passer til hvilket projekt?
Små sider med lidt trafik kører sikkert med PHP-FPM og konservative grænser. Rene testmiljøer eller særlige compliance-krav kan gøre CGI nyttigt på trods af tabet af hastighed. Butikker med høj trafik og meget konkurrencedygtige API'er har ofte gavn af LSAPI på LiteSpeed. Hvis du har brug for maksimal kompatibilitet og fleksibilitet, kan du stole på FPM. Til hosting af php med WordPress eller WooCommerce foretrækker jeg FPM som en alsidig Allrounder før.
Jeg tager aldrig en beslutning, der udelukkende er baseret på et benchmark. I stedet måler jeg den reelle blanding af statiske hits, dynamiske sider og API-kald. Den gennemsnitlige scripttid og andelen af cache-hits påvirker også valget. Jeg tager også hensyn til administratorens vaner, f.eks. hyppige udrulninger eller byggeprocesser. Den bedste løsning er stadig den, der fungerer under reelle Betingelser stabil og hurtig.
Omkostninger, licens og drift - hvad kan betale sig?
På rene omkostningssynspunkter FPM attraktiv, da den ikke kræver yderligere licenser. LSAPI kan reducere driftsomkostningerne pr. site gennem bedre tæthed og lavere latenstid, men kræver LiteSpeed-licenser i euro. For mange betalende kunder kan det ofte betale sig, men normalt ikke for hobbyprojekter. CGI forårsager indirekte omkostninger gennem ineffektiv ressourceudnyttelse og længere svartider. Jeg beregner derfor den samlede drift og sparer, hvor det giver mening. kvalitet ikke bringes i fare.
Evnen til at planlægge er stadig vigtig. En vært, der er for overbooket, sparer penge på kort sigt, men betaler for det med nedetid og utilfredse brugere. Moderne observationsværktøjer hjælper med at genkende flaskehalse på et tidligt tidspunkt. De, der regelmæssigt tilføjer kapacitet, holder ventetiden stabil og aflaster supporten. I sidste ende er den løsning, der sparer på ressourcerne og minimerer Oppetid høj.
Multi-PHP-versioner, udrulninger og nul nedetid
I hverdagen arbejder jeg ofte med flere PHP-versioner parallelt. Med FPM opnås dette rent via separate pools og separate sockets for hver version. Det giver mig mulighed for at migrere sites trin for trin uden at forstyrre det overordnede system. Jeg planlægger rullende opdateringer: først staging, så en lille produktionsgruppe, så resten. Nænsom genindlæsning (FPM: reload i stedet for restart) undgå hårde tear-offs og holde forbindelser åbne. Med LSAPI bruger jeg analoge mekanismer i LiteSpeed-stakken til at forvarme arbejdere og minimere koldstartseffekten.
Til udrulning uden nedetid er jeg opmærksom på atomare udgivelsesstrategier med symlinks og OPcache-validering. Efter skiftet rydder jeg selektivt cachen uden at kassere alt. Det holder tail latencies stabile, og nye udrulninger lander hurtigt i en varm tilstand. Vigtigt: Filtilladelser og ejere skal være korrekte, ellers vil FPM- eller LSAPI-arbejdere blokere for nye udgivelser.
Sockets vs. TCP: arkitektoniske beslutninger med konsekvenser
Handleren er forbundet enten via Unix-socket eller via TCP. Sockets sparer overhead og giver normalt minimalt bedre ventetider på en host. TCP er værd at bruge, hvis webserveren og håndteringen kører separat, eller hvis jeg vil fordele pools på flere noder. Skala gerne vil have. For TCP definerer jeg timeouts, keep-alive og backlog rent, så der ikke opstår 502/504-fejl under spidsbelastninger. I Apache-opsætninger er jeg opmærksom på antallet af aktive proxy-arbejdere, i Nginx på grænserne for åbne forbindelser. Med LSAPI håndterer LiteSpeed mange ting internt, men jeg tjekker stadig backloggen og køerne regelmæssigt under belastning.
Jeg overvåger køens længde på FPM-statussen, udnyttelsen af arbejderne og CPU-mætningen. En høj kø med lav udnyttelse indikerer ofte flaskehalse i frontenden (f.eks. for få Nginx-arbejdere) eller I/O-bremser der. Først når jeg kender flaskehalsen, øger jeg antallet af underordnede processer eller justerer netværksparametrene.
Overvågning, målinger og fejlfinding
Til observation er jeg afhængig af Holistisk overvågningWebserverlogs, FPM-status, systemmålinger (CPU, RAM, I/O), programlogs og syntetiske kontroller. Særligt værdifuld er FPMSlowlog, for at opdage afvigelser. Jeg korrelerer P95/P99-latencies med CPU-spikes, OPcache-hitrate, antal kørende processer og database-latencies. Hvis P99-forsinkelsen stiger, tjekker jeg først køer og timeouts mellem proxy og handler.
I tilfælde af en hændelse arbejder jeg udefra og ind: 1) HTTP-fejlkoder og tid, 2) proxy-/webserverfejl, 3) handlerkøer og worker-states, 4) applikationslogs, 5) backend-systemer (DB, cache, filsystem). Hyppige årsager til 502/504 er timeouts, der er for strenge, blokering af upstreams eller udmattet Poolens kapacitet. Enkle modforanstaltninger: realistiske timeouts, klare grænser og advarsler om, at før af udmattelse.
Filsystemer, realpath og OPcache-detaljer
Filadgang har større indflydelse på ventetiden, end mange tror. Jeg er opmærksom på hurtige Opbevaringsstier til kode og skabeloner. På netværksfilsystemer (f.eks. NFS) er realpath- og OPcache-parametre kritiske. En tilstrækkelig stor realpath_cache_size og en passende ttl forhindrer permanente stiopløsninger. I OPcache dimensionerer jeg memory_consumption, interned_strings_buffer og antallet af Hash-tabeller Jeg indstiller validate_timestamps og revalidate_freq til at matche implementeringsworkflowet, så ændringer træder i kraft hurtigt, men ikke udløser tjek hvert sekund.
For store kodebaser er det værd Forudindlæsning for centrale klasser og funktioner. Det sparer FPM- eller LSAPI-arbejdere for CPU-tid i den varme vej. Jeg tester kun JIT, hvor der er reelle CPU-flaskehalse (masser af numerisk logik). JIT giver sjældent fordele for klassisk CMS; en ren OPcache-konfiguration og en hurtig I/O-sti er vigtigere.
Database- og cache-forbindelse: undgå ventetid
Mange performanceproblemer stammer ikke fra håndteringen, men fra Databaser og cacher. Jeg overvåger forespørgselstider, forbindelsespuljer og låse. Permanente forbindelser kan hjælpe, men de Bind RAM i arbejderne. Jeg dimensionerer derfor pm.max_children i overensstemmelse med databasens forbindelsesgrænser og kontrollerer timeouts. For Redis/Memcached-adgange er lav netværkslatens og timeouts også afgørende. Jeg bruger tracing i applikationen til at genkende og reducere N+1-forespørgsler - det reducerer belastningen på handleren og backend på samme tid.
Det giver ofte mening i et meget konkurrencepræget miljø, Skrivning afkoble processer (køer, asynkrone jobs) og læseadgange i cachen. Det holder front-end-anmodninger korte og reducerer variationen i svartider.
Container-, chroot- og OS-aspekter
Alle, der bruger FPM eller LSAPI i Containere får fleksibilitet med versioner og grænser. Korrekte ulimits, en effektiv procesplanlægger og passende CPU-/hukommelseskvoter er vigtige. Kvoter, der er for hårde, forårsager hakken i P99-latenstider. I klassiske opsætninger hjælper chroot/jail eller brugerisolering via namespaces med at adskille filadgange strengt. Jeg holder billederne slanke for at holde koldstartstiderne korte (f.eks. efter en udrulning) og forvarmer pools, før trafikken skifter over.
Log-rotation og Modtryk-Strategier er obligatoriske: fulde diske eller blokerende logskrivere har en direkte effekt på svartiderne. Jeg kalibrerer også swappiness, HugePages (hvor det er relevant) og NUMA-strategier på værter med mange kerner, så medarbejderne ikke bliver bremset af hukommelsesadgange på tværs af noder.
LSAPI- og FPM-enheder i drift
LSAPI nyder godt af stabile, langvarige processer og effektiv afsendelse af anmodninger. Jeg regulerer det maksimale antal anmodninger pr. worker for at begrænse effekten af hukommelseslækage og overvåge genstarter i live-drift. Med FPM vælger jeg ondemand til steder med uregelmæssig trafik, dynamisk Jeg definerer pm.max_requests, så sporadiske lækager eller fragmentering ikke spiller en rolle. Jeg sætter request_slowlog_timeout tæt nok på til at genkende reelle hangs tidligt, men ikke så tæt på, at komplekse admin-operationer konstant slår alarm.
For begge verdener verificerer jeg Signalveje til genindlæsninger og definere eskaleringsstier, hvis medarbejderne ikke genstarter rent. Det forhindrer, at en udrulning midt på dagen forårsager forstyrrelser på platformen.
Tjekliste: Udvælgelse og justering i praksis
- Definer mål: maksimum Kompatibilitet (FPM) vs. minimum tail latency (LSAPI) vs. meget hård separation (CGI).
- Afklar serverens rolle: One-host-opsætning (Unix-socket) eller separate niveauer (TCP) - Indstil timeouts/backlog korrekt.
- Puljer pr. konto/site: eget UID/GID, stramme grænser for hukommelse, anmodninger og tid; aktiver slowlog.
- OPcache: tilstrækkelig størrelse, høj hitrate, revalidate-strategi egnet til udrulning; forudindlæsning om nødvendigt.
- Storage: hurtig sti til kode/cache, dimension realpath-cache, overhold NFS-specialfunktioner.
- DB/Cache: Forbindelser og timeouts i overensstemmelse med pm.max_children; fjern N+1-forespørgsler.
- Cachelag: Kombiner reverse proxy, sidecache og applikationscache; ugyldiggør i stedet for at tømme blindt.
- Observerbarhed: P95/P99, kø-længde, worker states, OPcache hit rate, I/O og backend latencies på et øjeblik.
- Udrulninger: Yndefuld genindlæsninger, opvarmning, atomare udrulninger, selektiv cache-ugyldiggørelse.
- Kapacitetsplanlægning: burst-reserver, ingen overbooking; realistisk vurdering af omkostninger/fordele ved LSAPI-licenser.
Kort opsummeret: min klassificering
Til blandede hostingmiljøer PHP-FPM den bedste balance mellem ydeevne, isolation og kompatibilitet. På LiteSpeed-stakke giver LSAPI målbare fordele med hensyn til tail latencies og RAM-forbrug. CGI er velegnet til streng adskillelse i nichetilfælde, men halter bagefter i dynamiske projekter. I første omgang stoler jeg på FPM med klare poolgrænser, aktiveret OPcache og en ren webserveropsætning. Hvis du forventer stor konkurrence, så test LSAPI på LiteSpeed, og tag derefter en beslutning. Cost-benefit-beslutning.


