Jämförelse av PHP-hanterare visar tydligt hur CGI, PHP-FPM och LSAPI styr exekveringen av PHP-skript och därmed karakteriserar latens, isolering och RAM-krav i hosting. Jag förklarar skillnaderna på ett praktiskt sätt, kategoriserar dem enligt arbetsbelastningar och ger rekommendationer för val och konfiguration i den dagliga driften.
Centrala punkter
- PrestandaLSAPI leder i svansfördröjningar, PHP-FPM levererar mycket konstanta svarstider.
- SäkerhetCGI separerar strikt, PHP-FPM isolerar med pooler, LSAPI kapslar in per användare.
- ResurserLSAPI sparar RAM, PHP-FPM förblir effektivt, CGI genererar overhead.
- KompatibilitetPHP-FPM passar Apache/Nginx, LSAPI glänser med LiteSpeed.
- ÖvningFör CMS och butiker använder jag mest PHP-FPM; mycket trafik drar ofta nytta av LSAPI.
Grunderna i PHP-hanterare
En PHP-hanterare kopplar ihop webbservern med PHP-tolk. CGI startar en ny process för varje förfrågan och uppnår på så sätt en mycket ren separation mellan konton. Denna separation kostar tid eftersom varje begäran laddar om tillägg och konfiguration. PHP-FPM håller arbetarna beständiga och distribuerar förfrågningar till pooler, vilket minskar startkostnaderna och håller latensen låg. LSAPI är djupt integrerat med LiteSpeed och använder mycket lätta, långlivade processer för Hög effektivitet.
Mod_php integrerar PHP direkt i webbservern, men isoleringen är svag. Jag föredrar moderna hanterare eftersom de minimerar felkällor och håller plattformen mer stabil under belastning. Om du är värd för många användare på ett system har du helt klart nytta av separata Användarsammanhang. Det är just här som FPM-pooler och LSAPI kommer till sin rätt. CGI är fortfarande ett säkert men långsamt alternativ för mycket små webbplatser och speciella testscenarier.
Jämförelsetabell: Styrkor och tillämpningsscenarier
I följande tabell sammanfattas de viktigaste funktionerna och de tilldelas typiska arbetsbelastningar. Jag använder den som ett snabbt beslutsstöd för hosting php-uppsättningar med CMS, butiker eller API:er. Observera att den faktiska prestandan också beror på cachelagring, lagring och nätverksprofil. Men översikten ger ändå en bra utgångspunkt för ett första val. Jag finjusterar sedan konfigurationen baserat på specifika belastningsprofiler och Uppmätta värden.
| handlare | Prestanda | Säkerhet | RAM-förbrukning | Skalbarhet | Lämplig för |
|---|---|---|---|---|---|
| CGI | Låg | Mycket hög | Hög | Låg | Tester, statiska eller sällan besökta sidor |
| PHP-FPM | Mycket hög | Hög | Låg | Hög | Delad hosting, CMS, API:er |
| LSAPI | Högsta | Medelhög till hög (per användare) | Mycket låg | Mycket hög | Hög trafik, e-handel, samtidighet |
CGI gör poäng med Separation, men lider av uppstartskostnader för processen. PHP-FPM erbjuder det bästa förhållandet mellan latens, genomströmning och isolering på system med Apache eller Nginx. LSAPI ger mycket låga tail-latenstider med hög konkurrens på LiteSpeed-stackar. Om du inte använder en LiteSpeed-server erbjuder FPM det bredaste stödet. För mycket små webbplatser håller jag mig till enkla inställningar; för växande projekt byter jag till FPM eller LSAPI.
Prestanda under belastning: latens och genomströmning
I den ökande konkurrensen har P95/P99-latenstiderna och Stabilitet av genomströmningen. LSAPI har de högsta belastningarna med förvånansvärt konsekventa svarstider. PHP-FPM följer tätt efter och reagerar mycket bra på pool-tuning, till exempel med dynamiska processnummer. CGI tappar märkbart i hastighet så snart många korta förfrågningar kommer in. För mer detaljerade mätningar, vänligen se min Jämförelse av prestanda, som täcker typiska CMS- och shop-arbetsbelastningar.
Jag kombinerar konsekvent FPM eller LSAPI med OPcache, så att bytekod inte ständigt genereras på nytt. Dessutom minskar cacher för omvänd proxy antalet PHP-träffar för återkommande innehåll. En jobbkö är värdefull för beräkningsintensiva uppgifter så att frontend-förfrågningar förblir snabba. Om du vill fånga upp sporadiska toppar kan du använda kortlivad burst-skalning via ytterligare FPM-arbetare. Detta håller svansfördröjningarna inom gränserna och Svarstider konsekvent.
Säkerhet och isolering i delad hosting
Vad som räknas i fleranvändarmiljöer Isolering minst lika mycket som hastighet. CGI uppnår en mycket ren separation genom processer per förfrågan, men med en hel del overhead. PHP-FPM isolerar per pool och tillåter hårda gränser för minne, exekveringstid och antal processer. LSAPI tilldelar också processer till konton, men är knuten till LiteSpeed-stacken i detalj. Om du vill kategorisera risker är det bäst att läsa min artikel om Poola risk med FPM och sätter tydliga gränser.
Jag ställer in ett separat konto för varje konto. pool med eget UID/GID och restriktiva rättigheter. Detta begränsar radien för möjliga attacker och förhindrar felaktiga skript från att se extern data. Detta inkluderar gränser för minne, maximala förfrågningar per arbetare och timeouts. Regelbundna uppdateringar och säkra filbehörigheter avrundar konceptet. Jag minimerar antalet adminskript som är öppet tillgängliga i nätverket eller skyddar dem med Autentisering.
Resursförbrukning och RAM-hantering
RAM bestämmer ofta Kostnader och densitet per server. LSAPI får poäng här med ett mycket litet fotavtryck per process och ekonomiska kontextväxlingar. PHP-FPM förblir också effektivt om jag skapar pooler dynamiskt och dimensionerar gränser på rätt sätt. CGI slösar minne på grund av frekvent omladdning av tillägg och är därför knappast lämplig för dynamiska projekt. Om du är värd för många konton ger FPM eller LSAPI dig betydligt fler reserver per nod och håller Totala kostnader planeringsbar.
Jag mäter regelbundet toppar i RAM-minnet och observerar fördelningen under dagen. Toppar indikerar för lågt antal arbetare eller ogynnsamma cachestrategier. Jag minskar efterfrågan med finare poolstorlekar och riktad OPcache-tuning. Detta minskar riskerna för swap och förhindrar oförutsägbara latensavvikelser. På överfulla värdar flyttar jag enskilda Platser på sina egna noder innan den totala prestandan blir lidande.
Kompatibilitet med Apache, Nginx och LiteSpeed
Valet av webbserver styr beslutet om att handlare. PHP-FPM fungerar utmärkt bakom Nginx och kan anslutas till Apache via proxy. I Apache-miljöer rekommenderar jag mpm_event, keep-alive-tuning och en stabil proxykonfiguration. LSAPI utvecklar sin fulla potential med LiteSpeed och läser .htaccess-filer på ett effektivt sätt. De som redan använder LiteSpeed får ofta ut det sista av prestandan med LSAPI. Effekt ut.
För statiskt innehåll använder jag Nginx eller LiteSpeed direkt från webbserverns cache. PHP bearbetar bara det som behöver förbli dynamiskt. Denna separation minskar belastningen på hanteraren och sparar CPU-tid. Som en bieffekt ökar TTFB-konsistensen med återkommande sidförfrågningar. Detta innebär att frontend förblir responsiv, även om Backends är under press.
Bästa praxis för PHP FPM-pooler
Jag börjar med en konservativ Poolens utformning per webbplats och mäter verkliga toppar. Sedan justerar jag pm, pm.max_children, pm.start_servers och pm.max_requests. Pooler som är för små gör att förfrågningar får vänta, pooler som är för stora äter upp RAM-minnet och genererar kontextbyten. För WordPress, WooCommerce eller TYPO3 väljer jag vanligtvis dynamisk eller ondemand och reglerar gränserna strikt. Mer information om pm.max_children finns i min guide pm.max_barn sammanfattade.
Jag sätter gränser som memory_limit och max_execution_time per pool. Detta förhindrar att enskilda skript blockerar resurser eller blir okontrollerbara. request_terminate_timeout skyddar mot hängande processer som annars skulle staplas på hög. max_input_vars och upload_max_filesize är förnuftigt säkrade, beroende på projektet. Detta håller pooler kontrollerbar och värden är stabil.
Cachelagring och OPcache i praktiken
För mig är OPcache en del av varje Installation av PHP. Jag aktiverar den, kontrollerar storleken och övervakar träfffrekvensen. För många implementeringar ställer jag in file_cache_only och ställer in revalidate_freq så att implementeringar får effekt snabbt. Jag använder också cache för omvänd proxy och plugins för sidcache i CMS för att minska PHP-träfffrekvensen. Ju färre förfrågningar som faktiskt hamnar i PHP, desto bättre skalar det allt.
De som använder sessioner på serversidan intensivt har ofta nytta av Redis. Jag reglerar TTL och hanterar strikt minnesgränser. För helsidescache överväger jag cache-nycklar och ogiltighetsstrategier så att butiker levererar korrekt efter pris- eller aktieförändringar. En tydlig cacheplan sparar CPU, RAM och tid. Samspelet mellan OPcache, proxy-cache och Cache för applikationer avgör i slutändan den upplevda hastigheten.
Beslutsmatris: Vilken handläggare passar för vilket projekt?
Små webbplatser med lite trafik körs säkert med PHP-FPM och konservativa gränser. Rena testmiljöer eller särskilda efterlevnadskrav kan göra CGI användbart, trots förlusten av hastighet. Butiker med hög trafik och mycket konkurrenskraftiga API:er drar ofta nytta av LSAPI på LiteSpeed. Om du behöver maximal kompatibilitet och flexibilitet kan du förlita dig på FPM. För hosting av php med WordPress eller WooCommerce föredrar jag FPM som ett mångsidigt Allroundspelare innan.
Jag fattar aldrig ett beslut som enbart baseras på ett benchmark. Istället mäter jag den verkliga mixen av statiska träffar, dynamiska sidor och API-anrop. Den genomsnittliga skripttiden och andelen cacheträffar påverkar också valet. Jag tar också hänsyn till administratörsvanor, t.ex. frekventa driftsättningar eller byggprocesser. Den bästa lösningen är fortfarande den som fungerar under verkliga Villkor stabil och snabb.
Kostnader, licens och drift - vad lönar sig?
På ren kostnadssynpunkt FPM attraktiv eftersom den inte kräver ytterligare licenser. LSAPI kan minska driftskostnaderna per site genom bättre densitet och lägre latens, men kräver LiteSpeed-licenser i euro. För många betalande kunder lönar sig detta ofta, men vanligtvis inte för hobbyprojekt. CGI orsakar indirekta kostnader genom ineffektivt resursutnyttjande och längre svarstider. Jag beräknar därför den totala driften och sparar där det är vettigt. kvalitet inte äventyras.
Möjligheten att planera är fortfarande viktig. En host som är för kraftigt överbokad sparar pengar på kort sikt, men betalar för det med driftstopp och missnöjda användare. Moderna observationsverktyg hjälper till att upptäcka flaskhalsar i ett tidigt skede. De som regelbundet lägger till kapacitet håller latenserna stabila och avlastar supporten. I slutändan är den lösning som sparar resurser och minimerar Drifttid hög.
Multi-PHP-versioner, lanseringar och ingen driftstoppstid
I vardagen arbetar jag ofta med flera PHP-versioner parallellt. Med FPM uppnås detta rent via separata pooler och separata uttag för varje version. Detta gör att jag kan migrera webbplatser steg för steg utan att störa det övergripande systemet. Jag planerar rullande uppdateringar: först staging, sedan en liten produktionsgrupp, sedan resten. Graciösa återladdningar (FPM: ladda om i stället för att starta om) undviker hårda avbrott och håller anslutningar öppna. Med LSAPI använder jag analoga mekanismer i LiteSpeed-stacken för att förvärma arbetare och minimera kallstartseffekten.
För driftsättningar utan driftstopp använder jag mig av atomic release-strategier med symlinks och Validering av OPcache. Efter bytet rensar jag cachen selektivt utan att kasta allt. Detta håller svanslatenserna stabila och nya distributioner landar snabbt i ett varmt tillstånd. Viktigt: Filbehörigheter och ägare måste vara korrekta, annars kommer FPM- eller LSAPI-arbetare att blockera nya utgåvor.
Sockets vs. TCP: arkitektoniska beslut med konsekvenser
Behandlaren är ansluten antingen via Unix-uttag eller via TCP. Sockets sparar overhead och ger vanligtvis minimalt bättre latenser på en host. TCP är värt att använda om webbservern och hanteraren körs separat eller om jag vill distribuera pooler över flera noder. Skala skulle vilja. För TCP definierar jag timeouts, keep-alive och backlog på ett tydligt sätt så att inga 502/504-fel uppstår under belastningstoppar. I Apache-konfigurationer är jag uppmärksam på antalet aktiva proxyarbetare, i Nginx på gränserna för öppna anslutningar. Med LSAPI hanterar LiteSpeed en hel del saker internt, men jag kontrollerar fortfarande backlog och köer regelbundet under belastning.
Jag övervakar kölängden på FPM-statusen, användningen av arbetarna och CPU-mättnaden. En hög kö med låg användning indikerar ofta flaskhalsar i frontend (t.ex. för få Nginx-arbetare) eller I/O-bromsar där. Först när jag vet var flaskhalsen finns ökar jag antalet underordnade processer eller justerar nätverksparametrarna.
Övervakning, mätvärden och felsökning
För observation förlitar jag mig på Holistisk övervakningWebbserverloggar, FPM-status, systemmätvärden (CPU, RAM, I/O), programloggar och syntetiska kontroller. Särskilt värdefull är FPMSlowlog, för att upptäcka avvikande värden. Jag korrelerar P95/P99-latenstider med CPU-toppar, OPcache-träfffrekvens, antal processer som körs och databaslatenstider. Om P99-fördröjningen ökar kontrollerar jag först köer och timeouts mellan proxy och hanterare.
I händelse av en incident arbetar jag utifrån och in: 1) HTTP-felkoder och tid, 2) proxy-/webbserverfel, 3) hanterarköer och arbetsstatus, 4) applikationsloggar, 5) backend-system (DB, cache, filsystem). Vanliga orsaker till 502/504 är timeouts som är för strikta, blockering av uppströmmar eller utmattad Poolens kapacitet. Enkla motåtgärder: realistiska timeouts, tydliga gränser och varningar om att före av utmattning.
Filsystem, realpath och OPcache-detaljer
Filåtkomst har en större inverkan på latensen än vad många tror. Jag är uppmärksam på snabba Lagringsstigar för kod och mallar. I nätverksfilsystem (t.ex. NFS) är parametrarna realpath och OPcache kritiska. En tillräckligt stor realpath_cache_size och en lämplig ttl förhindrar permanenta sökvägsupplösningar. I OPcache dimensionerar jag minnesförbrukningen, interned_strings_buffer och antalet Hash-tabeller Jag ställer in validate_timestamps och revalidate_freq så att de matchar arbetsflödet för distributionen, så att ändringarna får effekt snabbt men inte utlöser kontroller varje sekund.
För stora kodbaser är det värt att Förladdning för centrala klasser och funktioner. Detta sparar CPU-tid för FPM- eller LSAPI-arbetare i den heta vägen. Jag testar bara JIT där det finns verkliga CPU-flaskhalsar (massor av numerisk logik). JIT ger sällan fördelar för klassiska CMS; en ren OPcache-konfiguration och en snabb I/O-väg är viktigare.
Anslutning till databas och cache: undvik fördröjning
Många prestandaproblem beror inte på hanteraren, utan på Databaser och cacher. Jag övervakar körtider för frågor, anslutningspooler och lås. Permanenta anslutningar kan hjälpa, men de binda RAM i arbetarna. Jag dimensionerar därför pm.max_children i enlighet med databasens anslutningsgränser och kontrollerar timeouts. För Redis/Memcached-åtkomst är låg nätverkslatens och timeouts också avgörande. Jag använder spårning i applikationen för att känna igen och minska N+1-frågor - detta minskar belastningen på hanteraren och backend på samma gång.
Det är ofta vettigt i en mycket konkurrensutsatt miljö, skrivande frikoppla processer (köer, asynkrona jobb) och läsåtkomst i cacheminnet. Detta håller front-end-förfrågningarna korta och minskar variationen i svarstiderna.
Container-, chroot- och OS-aspekter
Alla som använder FPM eller LSAPI i Containrar får flexibilitet med versioner och gränser. Det är viktigt med korrekta ulimits, en effektiv processplanering och lämpliga CPU-/minneskvoter. Kvoter som är för hårda orsakar stuttering i P99-latenstider. I klassiska konfigurationer hjälper chroot/jail eller användarisolering via namnrymder till att strikt separera filåtkomst. Jag håller bilderna magra för att hålla kallstartstiderna korta (t.ex. efter en utrullning) och förvärmer pooler innan trafiken växlar över.
Log rotation och Bakåtsträvande-Strategier är obligatoriska: fulla diskar eller blockerande loggskrivare har en direkt effekt på svarstiderna. Jag kalibrerar också swappiness, HugePages (där så är lämpligt) och NUMA-strategier på värdar med många kärnor så att arbetarna inte saktas ner av minnesåtkomst mellan noder.
LSAPI- och FPM-enheter i drift
LSAPI drar nytta av stabila, långvariga processer och effektiv leverans av förfrågningar. Jag reglerar det maximala antalet förfrågningar per arbetare för att begränsa minnesläckageeffekter och övervaka omstarter i skarp drift. Med FPM väljer jag på begäran för platser med oregelbunden trafik, dynamisk Jag definierar pm.max_requests så att sporadiska läckor eller fragmentering inte spelar någon roll. Jag ställer in request_slowlog_timeout tillräckligt nära för att känna igen verkliga problem tidigt, men inte så nära att komplexa adminoperationer ständigt slår larm.
För båda världarna verifierar jag Signalvägar för omladdningar och definiera eskaleringsvägar om arbetarna inte startar om på ett rent sätt. Detta förhindrar att en utplacering mitt på dagen orsakar störningar i plattformen.
Checklista: Urval och inställning i praktiken
- Definiera mål: maximalt Kompatibilitet (FPM) vs. minsta svansfördröjning (LSAPI) vs. mycket hård separation (CGI).
- Klargör serverns roll: Envärdskonfiguration (Unix-socket) eller separata nivåer (TCP) - Ställ in timeouts/backlog på lämpligt sätt.
- Pooler per konto/site: eget UID/GID, snäva gränser för minne, förfrågningar och tid; aktivera slowlog.
- OPcache: tillräcklig storlek, hög träfffrekvens, revalidate-strategi lämplig för utplacering; förladdning vid behov.
- Lagring: snabb väg för kod/cache, dimension realpath cache, observera NFS specialfunktioner.
- DB/Cache: Anslutningar och tidsgränser överensstämmer med pm.max_children; eliminera N+1-frågor.
- Cachelagring: Kombinera omvänd proxy, sidcache och applikationscache; ogiltigförklara istället för att tömma blint.
- Observerbarhet: P95/P99, kölängd, arbetsstatus, träfffrekvens för OPcache, I/O- och backend-latens på ett ögonblick.
- Utrullningar: Graciös omladdningar, uppvärmning, atomic deployments, selektiv cacheinvalidering.
- Kapacitetsplanering: burst reserves, ingen överbokning; realistisk bedömning av kostnader/fördelar med LSAPI-licenser.
Kort sammanfattat: min klassificering
För blandade hosting-miljöer PHP-FPM den bästa balansen mellan prestanda, isolering och kompatibilitet. På LiteSpeed-stackar ger LSAPI mätbara fördelar när det gäller tail latency och RAM-förbrukning. CGI är lämpligt för strikt separation i nischfall, men hamnar på efterkälken i dynamiska projekt. Jag förlitar mig inledningsvis på FPM med tydliga poolgränser, aktiverad OPcache och en ren webbserverkonfiguration. Om du förväntar dig mycket konkurrens bör du testa LSAPI på LiteSpeed och sedan fatta ett beslut. Kostnad och nytta-beslut.


