{"id":17358,"date":"2026-02-05T11:52:30","date_gmt":"2026-02-05T10:52:30","guid":{"rendered":"https:\/\/webhosting.de\/wordpress-php-fpm-children-blockieren-optimierungstuning-serverperf\/"},"modified":"2026-02-05T11:52:30","modified_gmt":"2026-02-05T10:52:30","slug":"wordpress-php-fpm-barn-block-optimering-tuning-serverperf","status":"publish","type":"post","link":"https:\/\/webhosting.de\/sv\/wordpress-php-fpm-children-blockieren-optimierungstuning-serverperf\/","title":{"rendered":"WordPress PHP-FPM Barn: Felaktiga v\u00e4rden blockera sidor"},"content":{"rendered":"<p><strong>PHP-FPM Barn<\/strong> best\u00e4mmer i WordPress om f\u00f6rfr\u00e5gningar g\u00e5r smidigt eller fastnar i k\u00f6n. Jag ska visa dig hur felaktiga <strong>pm.max_barn<\/strong>-v\u00e4rden blockerar sidor, tar RAM-minne i anspr\u00e5k och hur jag ber\u00e4knar rena v\u00e4rden.<\/p>\n\n<h2>Centrala punkter<\/h2>\n<p>Innan jag g\u00e5r djupare ska jag kort sammanfatta de viktigaste budskapen:<\/p>\n<ul>\n  <li><strong>pm.max_barn<\/strong> avg\u00f6r hur m\u00e5nga samtidiga PHP-f\u00f6rfr\u00e5gningar som k\u00f6rs.<\/li>\n  <li><strong>F\u00f6r lite<\/strong> Barn genererar k\u00f6er, 502\/504 och h\u00f6g TTFB.<\/li>\n  <li><strong>F\u00f6r mycket<\/strong> leder till RAM-flaskhalsar, swap och OOM-d\u00f6d.<\/li>\n  <li><strong>Formel<\/strong>tillg\u00e4ngligt PHP RAM \/ processstorlek \u00d7 0,7-0,8.<\/li>\n  <li><strong>Iterativ<\/strong> Tuning med \u00f6vervakning ger b\u00e4sta m\u00f6jliga prestanda p\u00e5 l\u00e5ng sikt.<\/li>\n<\/ul>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/02\/wordpress-serverproblem-7193.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Varf\u00f6r felaktiga PHP-FPM Children-sidor blockeras<\/h2>\n\n<p>Varje dynamisk WordPress-beg\u00e4ran kr\u00e4ver sin egen <strong>Arbetare<\/strong>, och det \u00e4r just dessa processer som poolen kontrollerar via pm.max_children. Om jag s\u00e4tter v\u00e4rdet f\u00f6r l\u00e5gt samlas f\u00f6rfr\u00e5gningar i en k\u00f6 och <strong>TTFB<\/strong> \u00f6kar m\u00e4rkbart. Om jag st\u00e4ller in v\u00e4rdet f\u00f6r h\u00f6gt anv\u00e4nder varje barnprocess ytterligare RAM-minne och servern v\u00e4xlar till swap. Allt g\u00e5r l\u00e5ngsammare i swappen tills Apache eller Nginx rapporterar 502\/504 eller OOM-d\u00f6daren avslutar processer. H\u00e4lsosam genomstr\u00f6mning uppn\u00e5s endast n\u00e4r antalet barn matchar den verkliga RAM-budgeten och projektets belastning.<\/p>\n\n<h2>Formeln f\u00f6r pm.max_children i praktiken<\/h2>\n\n<p>Jag b\u00f6rjar med den enkla formeln: tillg\u00e4ngligt RAM-minne f\u00f6r PHP dividerat med den genomsnittliga storleken p\u00e5 en barnprocess, multiplicerat med ett <strong>S\u00e4kerhetsfaktor<\/strong> Jag best\u00e4mmer RAM-minnet per process med ps och RSS-kolumnen; f\u00f6r typiska WordPress-stackar \u00e4r 50-250 MB ofta korrekt. P\u00e5 en 4 GB-server reserverar jag minne f\u00f6r Linux-, databas- och cachetj\u00e4nster och l\u00e4mnar cirka 1,5-2 GB f\u00f6r <strong>PHP<\/strong> kvarst\u00e5r. Om processgenomsnittet till exempel \u00e4r 100 MB blir 2 000 \/ 100 \u00d7 0,75 = 15 barn. Denna siffra fungerar som en utg\u00e5ngspunkt, som jag f\u00f6rfinar beroende p\u00e5 belastningsprofil, cachning och plugin-mix.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/02\/wordpress_fpm_meeting_4287.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Startv\u00e4rden f\u00f6r typiska WordPress-installationer<\/h2>\n\n<p>F\u00f6r sm\u00e5 bloggar med 2 GB RAM, 8 barn, pm = dynamic och en pm.max_requests p\u00e5 ca. <strong>800<\/strong>. F\u00f6r medelstora projekt med 4 GB RAM st\u00e4ller jag in 12 barn, start_servers 4, min_spare_servers 4. Stora butiker med 8 GB RAM eller mer har nytta av 21-40 barn; om belastningen \u00e4r permanent h\u00f6g kan pm = static s\u00e4kerst\u00e4lla konstant genomstr\u00f6mning. Jag kontrollerar sedan f\u00f6rh\u00e5llandet mellan CPU-anv\u00e4ndning, RAM-anv\u00e4ndning och svarstider f\u00f6r att kunna g\u00f6ra finjusteringar. Om du vill f\u00f6rdjupa dig kan du hitta bakgrundsinformation p\u00e5 <a href=\"https:\/\/webhosting.de\/sv\/wordpress-php-fpm-optimala-instaellningar-prestanda-serverboost\/\">optimala PHP-FPM-inst\u00e4llningar<\/a>.<\/p>\n\n<h2>M\u00e4tning av processer: Hur man fastst\u00e4ller RAM-krav<\/h2>\n\n<p>Jag best\u00e4mmer f\u00f6rst processernas verkliga storlek innan jag fastst\u00e4ller v\u00e4rdena, eftersom kristallkulor inte \u00e4r till n\u00e5gon hj\u00e4lp h\u00e4r och dessutom kostar pengar. <strong>Effekt<\/strong>. Kommandot ps -ylC php-fpm -sort:rss returnerar RSS-storlekarna, som jag \u00f6vervakar under n\u00e5gra minuter. Processer v\u00e4xer ofta under uppdateringar eller cron-jobb, vilket \u00e4r anledningen till att jag inkluderar spikar i ber\u00e4kningen. Jag anv\u00e4nder ocks\u00e5 htop och free -h f\u00f6r att kontrollera RAM-minnesreserverna och m\u00e4ngden swap. Jag anv\u00e4nder dessa data f\u00f6r att fastst\u00e4lla ett tillf\u00f6rlitligt genomsnitt och v\u00e4lja en konservativ s\u00e4kerhetsfaktor.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/02\/wordpress-phpfpm-blockiert-9327.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Viktiga parametrar i en \u00f6verblick<\/h2>\n\n<p>F\u00f6rutom pm.max_children avg\u00f6r andra poolalternativ hur rent WordPress behandlar f\u00f6rfr\u00e5gningar och hur v\u00e4l det frig\u00f6r minne, vilket m\u00e4rkbart minskar <strong>Stabilitet<\/strong> pm reglerar l\u00e4get: dynamic anpassar antalet processer till belastningen, static bibeh\u00e5ller ett fast antal. pm.max_requests f\u00f6rhindrar minnesuppbl\u00e5sning genom att starta om processer efter X f\u00f6rfr\u00e5gningar. request_terminate_timeout skyddar mot avbrott som orsakas av felaktiga eller l\u00e5ngsamma skript. Med den h\u00e4r upps\u00e4ttningen t\u00e4cker jag 90 procent av de verkliga praktiska fallen.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Parametrar<\/th>\n      <th>Funktion<\/th>\n      <th>WordPress rekommendation<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>pm<\/td>\n      <td>L\u00e4ge f\u00f6r processtyrning<\/td>\n      <td>dynamisk f\u00f6r varierande belastning; statisk f\u00f6r permanent h\u00f6g trafik<\/td>\n    <\/tr>\n    <tr>\n      <td>pm.max_barn<\/td>\n      <td>Maximalt antal samtidiga arbetare<\/td>\n      <td>Tillg\u00e4ngligt PHP RAM \/ processstorlek \u00d7 0,75<\/td>\n    <\/tr>\n    <tr>\n      <td>pm.max_f\u00f6rfr\u00e5gningar<\/td>\n      <td>\u00c5tervinning av processer<\/td>\n      <td>300-1.000; snarare l\u00e4gre med WooCommerce<\/td>\n    <\/tr>\n    <tr>\n      <td>beg\u00e4ran_avsluta_timeout<\/td>\n      <td>Avbokning av l\u00e5ngvariga f\u00f6rfr\u00e5gningar<\/td>\n      <td>60-120 sekunder mot h\u00e4ngare<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<h2>Dynamiskt, on demand eller statiskt - vilket l\u00e4ge \u00e4r r\u00e4tt f\u00f6r dig?<\/h2>\n<p>Jag v\u00e4ljer l\u00e4ge f\u00f6r att matcha lastprofilen: <strong>dynamisk<\/strong> \u00e4r min standard, eftersom den flexibelt anpassar antalet aktiva processer och d\u00e4rmed sparar RAM n\u00e4r det inte h\u00e4nder s\u00e5 mycket. <strong>statisk<\/strong> Jag anv\u00e4nder det n\u00e4r belastningen \u00e4r konstant och jag beh\u00f6ver h\u00e5rda \u00e5taganden n\u00e4r det g\u00e4ller latens och genomstr\u00f6mning - till exempel under kampanjer eller f\u00f6rs\u00e4ljning. <strong>p\u00e5 beg\u00e4ran<\/strong> \u00e4r l\u00e4mplig f\u00f6r servrar med l\u00e5nga inaktivitetsfaser: Processer skapas bara n\u00e4r de beh\u00f6vs och avslutas igen efter inaktivitet. Avv\u00e4gningen \u00e4r kallstarter; den f\u00f6rsta f\u00f6rfr\u00e5gan per ny process k\u00e4nns l\u00e5ngsammare. F\u00f6r ondemand st\u00e4ller jag in <em>pm.process_idle_timeout<\/em> rent (t.ex. 10-20s), med dynamik h\u00e5ller jag <em>starta_servrar<\/em>, <em>min_spare_servrar<\/em> och <em>max_spare_servrar<\/em> smal s\u00e5 att poolen skalar snabbt men inte \u201esv\u00e4ller\u201c.<\/p>\n\n<h2>Exempel p\u00e5 konfiguration f\u00f6r din pool<\/h2>\n\n<p>P\u00e5 Debian\/Ubuntu finns poolfilen vanligtvis under \/etc\/php\/8.x\/fpm\/pool.d\/www.conf, vilket ger mig en tydlig <strong>Struktur<\/strong> f\u00f6r anpassningar. Jag st\u00e4ller in pm p\u00e5 dynamisk, f\u00f6rankrar ett realistiskt v\u00e4rde f\u00f6r pm.max_children och h\u00e5ller reservservern t\u00e4t. Jag st\u00e4ller in \u00e5tervinningen till 500 f\u00f6r att tidigt begr\u00e4nsa l\u00e4ckage och RAM-\u00f6kningar. Efter varje \u00e4ndring testar jag belastningen och \u00e5tg\u00e4rdar flaskhalsar innan jag \u00f6kar v\u00e4rdena ytterligare. F\u00f6r bakgrundsinformation om gr\u00e4nsv\u00e4rden, insikten p\u00e5 <a href=\"https:\/\/webhosting.de\/sv\/php-fpm-processhantering-pm-max-barn-optimera-kaerna\/\">Optimera pm.max_children<\/a>.<\/p>\n\n<pre><code>pm = dynamisk\npm.max_barn = 15\npm.start_servers = 4\npm.min_spare_servers = 4\npm.max_spare_servers = 8\npm.max_f\u00f6rfr\u00e5gningar = 500\nbeg\u00e4ran_avsluta_timeout = 90s\n<\/code><\/pre>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/02\/wordpress_phpfpm_techoffice_9271.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Flera pooler, uttag och ren isolering<\/h2>\n<p>F\u00f6r flera projekt eller tydligt \u00e5tskilda roller (frontend vs. admin\/REST), s\u00e4tter jag upp <strong>separata pooler<\/strong> med sin egen anv\u00e4ndare och socket. P\u00e5 s\u00e5 s\u00e4tt begr\u00e4nsar varje pool sina egna barn och en avvikare blockerar inte resten. P\u00e5 en v\u00e4rd f\u00f6redrar jag <strong>Unix-uttag<\/strong> j\u00e4mf\u00f6rt med TCP (listen = \/run\/php\/site.sock) - l\u00e4gre latens, mindre overhead. Jag anv\u00e4nder TCP mellan Nginx\/Apache och PHP-FPM p\u00e5 olika v\u00e4rdar\/containrar. Jag anv\u00e4nder <em>listen.\u00e4gare<\/em>, <em>listen.group<\/em> och <em>listen.mode<\/em> konsekvent och, om n\u00f6dv\u00e4ndigt, h\u00f6ja <em>listen.backlog<\/em> s\u00e5 att korta belastningstoppar inte leder till anslutningsfel. Med en dedikerad administrat\u00f6rspool kan jag uppn\u00e5 en stramare <em>beg\u00e4ran_avsluta_timeout<\/em> drivning och <em>pm.max_f\u00f6rfr\u00e5gningar<\/em> l\u00e4gre utan att sakta ner den caching-starka frontend-poolen.<\/p>\n\n<h2>K\u00e4nna igen symtom och reagera p\u00e5 r\u00e4tt s\u00e4tt<\/h2>\n\n<p>Om det regelbundet st\u00e5r \u201eserver reached pm.max_children\u201c i felloggen begr\u00e4nsar poolen antalet <strong>Parallellism<\/strong> och jag \u00f6kar den m\u00e5ttligt. Om 502\/504 intr\u00e4ffar samtidigt som swap-anv\u00e4ndningen \u00e4r h\u00f6g \u00e5terst\u00e4ller jag pm.max_children och s\u00e4nker pm.max_requests. Om CPU \u00f6kar med l\u00e5g RAM-anv\u00e4ndning blockeras vanligtvis fr\u00e5gor eller PHP-logik; jag optimerar databasen och cachningen. Om f\u00f6rfr\u00e5gningar fastnar kan en striktare request_terminate_timeout och logganalys med tidsst\u00e4mplar hj\u00e4lpa. Jag kontrollerar i\u00f6gonfallande toppar mot cronjobs, s\u00f6kindex och admin\u00e5tg\u00e4rder.<\/p>\n\n<h2>FPM-status och slowlog: exakt diagnos<\/h2>\n<p>Jag aktiverar <strong>Status<\/strong> per pool (pm.status_path) och l\u00e4sa nyckeltal som t.ex. <em>aktiva processer<\/em>, <em>max antal barn som n\u00e5s<\/em>, <em>lyssna k\u00f6<\/em> och <em>max lyssna k\u00f6<\/em> av. En permanent v\u00e4xande listk\u00f6 visar tydligt: f\u00f6r f\u00e5 barn eller blockerande backends. Jag st\u00e4ller ocks\u00e5 in <em>beg\u00e4ran_slowlog_timeout<\/em> (t.ex. 3-5 \u00e5r) och en <em>slowlog<\/em>-v\u00e4g. Det \u00e4r s\u00e5 h\u00e4r jag ser stacksp\u00e5r av f\u00f6rfr\u00e5gningar som dr\u00f6jer - ofta externa HTTP-anrop, komplexa WooCommerce-fr\u00e5gor eller bildmanipulationer. Med <em>catch_workers_output<\/em> varningar fr\u00e5n arbetarna samlas in i loggarna. Baserat p\u00e5 dessa data best\u00e4mmer jag om mer parallellism hj\u00e4lper eller om jag beh\u00f6ver l\u00f6sa flaskhalsar i koden\/DB:n.<\/p>\n\n<h2>\u00d6vervakning: 3-5 dagar ren utv\u00e4rdering<\/h2>\n\n<p>Efter inst\u00e4llningen observerar jag belastningstoppar under flera dagar, eftersom kortsiktiga <strong>fluktuationer<\/strong> lura. Jag loggar RAM, swap, 502\/504, TTFB och antalet aktiva processer i FPM-status. Under 80 procents RAM-anv\u00e4ndning utan swap och utan k\u00f6er har jag r\u00e4tt. Om det uppst\u00e5r flaskhalsar vid \u00e5tg\u00e4rder som utcheckning, s\u00f6kning eller import justerar jag specifikt pm.max_children och pm.max_requests. Varje steg utf\u00f6rs i sm\u00e5 justeringar och med en ny m\u00e4tning.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/02\/wordpress_phpfpm_bugfix_4823.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Minnesber\u00e4kning i detalj: RSS, PSS och delat minne<\/h2>\n<p>Processvariabeln \u00e4r knepig: <strong>RSS<\/strong> (Resident Set Size) inneh\u00e5ller \u00e4ven delade segment som OPcache och bibliotek. D\u00e4rf\u00f6r \u00f6verskattar jag snabbt RAM-f\u00f6rbrukningen om jag bara r\u00e4knar ut \u201eRSS \u00d7 Children\u201c. B\u00e4ttre \u00e4r att <strong>PSS<\/strong>-view (Proportional Set Size), som f\u00f6rdelar delat minne r\u00e4ttvist mellan processer - verktyg som smem hj\u00e4lper till h\u00e4r. Ber\u00e4kningen inkluderar <strong>OPcache<\/strong> (t.ex. 256 MB + str\u00e4ngar), <strong>APCu<\/strong> (t.ex. 64-128 MB) och masterprocessen. PHP <em>memory_limit<\/em> \u00e4r inte ett genomsnitt, utan den \u00f6vre gr\u00e4nsen per beg\u00e4ran; enskilda toppar kan f\u00f6rekomma, men det \u00e4r medelv\u00e4rdet som r\u00e4knas. Jag planerar en buffert s\u00e5 att spikar, drifts\u00e4ttningar och cronjobs inte omedelbart utl\u00f6ser byten, och l\u00e4mnar <em>pm.max_f\u00f6rfr\u00e5gningar<\/em> f\u00f6r att begr\u00e4nsa minnesuppbl\u00e5sning.<\/p>\n\n<h2>Minska WordPress-specifik belastning<\/h2>\n\n<p>Jag minskar PHP-belastningen f\u00f6rst, innan jag \u00f6kar antalet barn ytterligare, eftersom en snabbare cache-tr\u00e4fffrekvens sparar realtid. <strong>RAM<\/strong>. Cacher p\u00e5 hela sidan minskar drastiskt PHP-f\u00f6rfr\u00e5gningar, vilket skapar kapacitet f\u00f6r utcheckning, s\u00f6kning och administration. OPcache med memory_consumption p\u00e5 256 MB accelererar bytekoden och avlastar poolen. I praktiken h\u00e5ller jag PHP memory_limit p\u00e5 256M s\u00e5 att enskilda plugins inte saktar ner servern. Mer insikt om flaskhalsar finns i guiden <a href=\"https:\/\/webhosting.de\/sv\/php-arbetare-hosting-flaskhals-guide-balans\/\">PHP-Worker som flaskhals<\/a>.<\/p>\n\n<h2>Balans mellan databas- och cache-backends<\/h2>\n<p>Varje PHP-medarbetare genererar potentiellt en <strong>Anslutning till databas<\/strong>. Om jag \u00f6kar pm.max_children \u00f6kar ocks\u00e5 den samtidiga DB-belastningen. Jag kontrollerar d\u00e4rf\u00f6r MySQL\/MariaDB: <em>max_anslutningar<\/em>, buffert (innodb_buffer_pool_size) och fr\u00e5geplaneraren. Redis\/Memcached m\u00e5ste h\u00e5lla j\u00e4mna steg parallellt - <em>maxclients<\/em>, minnesgr\u00e4ns och latenser. En WordPress-instans med 20 aktiva barn kan enkelt m\u00e4tta DB om flera dyra fr\u00e5gor k\u00f6rs parallellt. Det \u00e4r d\u00e4rf\u00f6r jag justerar DB (index, l\u00e5ngsamma fr\u00e5gor) och st\u00e4ller in till <strong>Best\u00e4ndiga objektcacher<\/strong>, innan jag sl\u00e4pper fler barn. Detta \u00f6kar genomstr\u00f6mningen utan att \u00f6verbelasta backend.<\/p>\n\n<h2>WooCommerce, Cron och Admin: specialfall<\/h2>\n\n<p>Butiker genererar fler samtidiga dynamiska f\u00f6rfr\u00e5gningar, vilket \u00e4r anledningen till att jag anv\u00e4nder n\u00e5got <strong>Luft<\/strong> med pm.max_children. Samtidigt tenderar jag att s\u00e4nka pm.max_requests f\u00f6r att kontinuerligt minska minnesuppbl\u00e5sningen. F\u00f6r import och cronjobs planerar jag ytterligare budget eller utf\u00f6r uppgifter utanf\u00f6r topptimmarna. Adminomr\u00e5det f\u00e5r ofta toppar med kort varsel; h\u00e4r ger cachelagring mindre skydd, s\u00e5 effektiv poolkontroll r\u00e4knas. Om det finns tecken p\u00e5 k\u00f6er \u00f6kar jag i sm\u00e5 steg och \u00f6vervakar m\u00e4tv\u00e4rdena omedelbart efter\u00e5t.<\/p>\n\n<h2>Containrar, vCPU-kvoter och OOM-f\u00e4llor<\/h2>\n<p>I containrar och virtuella datorer ligger fokus p\u00e5 <strong>effektiv<\/strong> RAM-gr\u00e4ns (cgroups), inte p\u00e5 v\u00e4rden. Jag ber\u00e4knar d\u00e4rf\u00f6r pm.max_children fr\u00e5n den tilldelade gr\u00e4nsen och inte fr\u00e5n \u201efree -h\u201c. Container OOMs \u00e4r skoningsl\u00f6sa - k\u00e4rnan avslutar processer h\u00e5rt. CPU-kvoter r\u00e4knas ocks\u00e5: Fler barn hj\u00e4lper inte om 1-2 vCPU:er begr\u00e4nsar datatiden. Som en tumregel skalar jag IO-tunga WordPress-arbetsbelastningar till cirka 2-4 \u00d7 antalet vCPU: er; \u00f6ver detta \u00f6kar kontextv\u00e4xlingarna, men inte den verkliga genomstr\u00f6mningen. I orkestrerade milj\u00f6er rullar jag ut \u00e4ndringar p\u00e5 ett konservativt s\u00e4tt, observerar omstarter av poddar och beh\u00e5ller prober f\u00f6r beredskap\/livsl\u00e4ngd s\u00e5 att korta uppv\u00e4rmningsfaser av FPM inte r\u00e4knas som fel.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/02\/wordpress-server-techniker-7483.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Felk\u00e4llor som ofta f\u00f6rbises<\/h2>\n\n<p>M\u00e5nga problem h\u00e4rr\u00f6r inte fr\u00e5n poolen, utan fr\u00e5n <strong>Insticksprogram<\/strong>, som multiplicerar f\u00f6rfr\u00e5gningar eller genererar l\u00e5nga processer. Indexerade s\u00f6kningar, brutna crawler-regler och \u00f6verdrivna heartbeat-intervaller driver upp belastningen. D\u00e4rf\u00f6r kontrollerar jag alltid loggar, query monitor och cachelagringsrubriker f\u00f6rst. Om belastningen bara uppst\u00e5r med vissa webbadresser tolkar jag detta som en indikation p\u00e5 flaskhalsar i plugin eller mall. F\u00f6rst n\u00e4r dessa problem har l\u00f6sts skalar jag Children ytterligare.<\/p>\n\n<h2>F\u00f6rst\u00e5 sessioner, admin AJAX och l\u00e5s<\/h2>\n<p>WordPress\/plugins arbetar delvis med <strong>Sessioner<\/strong>. Filbaserade sessionsl\u00e5s kan serialisera f\u00f6rfr\u00e5gningar - en enda l\u00e5ngsam f\u00f6rfr\u00e5gan blockerar resten av samma sessions-ID. Jag h\u00e5ller sessionsanv\u00e4ndningen l\u00e5g och kontrollerar om admin AJAX-bursts (wp-admin\/admin-ajax.php) avfyras on\u00f6digt ofta. Heartbeat b\u00f6r strypas p\u00e5 ett f\u00f6rnuftigt s\u00e4tt, annars genererar det belastning utan merv\u00e4rde. Om det f\u00f6rekommer l\u00e5sningar eller l\u00e5nga fil\u00e5tkomster hj\u00e4lper det inte med mer parallellism, utan h\u00e4r hj\u00e4lper cachelagring, snabbare lagrings-I\/O eller en annan sessionshanterare. I loggar k\u00e4nner jag igen s\u00e5dana m\u00f6nster fr\u00e5n m\u00e5nga liknande f\u00f6rfr\u00e5gningar som startar samtidigt med ovanligt l\u00e5nga k\u00f6rtider.<\/p>\n\n<h2>\u00d6versikt \u00f6ver timeouts f\u00f6r Nginx, Apache och FastCGI<\/h2>\n\n<p>Webbservern s\u00e4tter ocks\u00e5 gr\u00e4nser som jag m\u00e5ste harmonisera med FPM-v\u00e4rdena, annars kommer de att f\u00f6rsvinna. <strong>Tuning<\/strong>. Med Nginx \u00e4r jag uppm\u00e4rksam p\u00e5 fastcgi_read_timeout och tillr\u00e4ckligt med arbetsprocesser. Under Apache kontrollerar jag mpm_event, keepalive-inst\u00e4llningar och proxy-timeouts. Om dessa gr\u00e4nser inte \u00e4r korrekta rapporterar anv\u00e4ndarna timeouts trots att FPM fortfarande har kapacitet. Standardiserade tidsbudgetar h\u00e5ller v\u00e4gen fr\u00e5n klienten till PHP konsekvent.<\/p>\n\n<h2>Strategi f\u00f6r utrullning, tester och drift<\/h2>\n<p>Jag rullar ut \u00e4ndringar av pm.max_children steg f\u00f6r steg och testar dem under verklig belastning. En omladdning av FPM (graceful) tar \u00f6ver konfigurationer utan att bryta anslutningen. F\u00f6re st\u00f6rre hopp simulerar jag toppar (t.ex. f\u00f6rs\u00e4ljningsstart) och observerar f\u00f6ljande <em>lyssna k\u00f6<\/em>, CPU, RAM, 95:e-99:e percentilen av latens- och felfrekvenser. Jag dokumenterar de antaganden som g\u00f6rs s\u00e5 att senare teammedlemmar f\u00f6rst\u00e5r varf\u00f6r ett v\u00e4rde v\u00e4ljs p\u00e5 det h\u00e4r s\u00e4ttet. Jag st\u00e4ller in larm f\u00f6r: swap &gt; 0, \u201emax children reached\u201c i statusen, \u00f6kande 502\/504 och DB-latenscy. Detta s\u00e4kerst\u00e4ller att plattformen f\u00f6rblir stabil \u00e4ven m\u00e5nader senare n\u00e4r trafiken och plugin-mixen \u00e4ndras.<\/p>\n\n<h2>Kortfattat sammanfattat<\/h2>\n\n<p>Felaktigt inst\u00e4lld <strong>PHP-FPM<\/strong>-barn g\u00f6r WordPress l\u00e5ngsammare, antingen i k\u00f6er eller i RAM-gr\u00e4nsen. Jag best\u00e4mmer processstorleken, reserverar minne f\u00f6r systemtj\u00e4nster och st\u00e4ller in pm.max_children med buffer. Sedan kontrollerar jag pm.max_requests, request_terminate_timeout och l\u00e4get pm = dynamisk eller statisk enligt belastningsprofilen. Caching, OPcache och clean plugins minskar m\u00e4rkbart antalet PHP-f\u00f6rfr\u00e5gningar. Om du genomf\u00f6r dessa steg konsekvent kommer du att h\u00e5lla sidorna responsiva och servern tillf\u00f6rlitlig.<\/p>","protected":false},"excerpt":{"rendered":"<p>Felaktiga **PHP-FPM-barn** blockerar WordPress-webbplatser. L\u00e4r dig php-fpm wordpress tuning f\u00f6r perfekt wp php children och hostingprestanda.<\/p>","protected":false},"author":1,"featured_media":17351,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_crdt_document":"","inline_featured_image":false,"footnotes":""},"categories":[733],"tags":[],"class_list":["post-17358","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-wordpress"],"acf":[],"_wp_attached_file":null,"_wp_attachment_metadata":null,"litespeed-optimize-size":null,"litespeed-optimize-set":null,"_elementor_source_image_hash":null,"_wp_attachment_image_alt":null,"stockpack_author_name":null,"stockpack_author_url":null,"stockpack_provider":null,"stockpack_image_url":null,"stockpack_license":null,"stockpack_license_url":null,"stockpack_modification":null,"color":null,"original_id":null,"original_url":null,"original_link":null,"unsplash_location":null,"unsplash_sponsor":null,"unsplash_exif":null,"unsplash_attachment_metadata":null,"_elementor_is_screenshot":null,"surfer_file_name":null,"surfer_file_original_url":null,"envato_tk_source_kit":null,"envato_tk_source_index":null,"envato_tk_manifest":null,"envato_tk_folder_name":null,"envato_tk_builder":null,"envato_elements_download_event":null,"_menu_item_type":null,"_menu_item_menu_item_parent":null,"_menu_item_object_id":null,"_menu_item_object":null,"_menu_item_target":null,"_menu_item_classes":null,"_menu_item_xfn":null,"_menu_item_url":null,"_trp_menu_languages":null,"rank_math_primary_category":null,"rank_math_title":null,"inline_featured_image":null,"_yoast_wpseo_primary_category":null,"rank_math_schema_blogposting":null,"rank_math_schema_videoobject":null,"_oembed_049c719bc4a9f89deaead66a7da9fddc":null,"_oembed_time_049c719bc4a9f89deaead66a7da9fddc":null,"_yoast_wpseo_focuskw":null,"_yoast_wpseo_linkdex":null,"_oembed_27e3473bf8bec795fbeb3a9d38489348":null,"_oembed_c3b0f6959478faf92a1f343d8f96b19e":null,"_trp_translated_slug_en_us":null,"_wp_desired_post_slug":null,"_yoast_wpseo_title":null,"tldname":null,"tldpreis":null,"tldrubrik":null,"tldpolicylink":null,"tldsize":null,"tldregistrierungsdauer":null,"tldtransfer":null,"tldwhoisprivacy":null,"tldregistrarchange":null,"tldregistrantchange":null,"tldwhoisupdate":null,"tldnameserverupdate":null,"tlddeletesofort":null,"tlddeleteexpire":null,"tldumlaute":null,"tldrestore":null,"tldsubcategory":null,"tldbildname":null,"tldbildurl":null,"tldclean":null,"tldcategory":null,"tldpolicy":null,"tldbesonderheiten":null,"tld_bedeutung":null,"_oembed_d167040d816d8f94c072940c8009f5f8":null,"_oembed_b0a0fa59ef14f8870da2c63f2027d064":null,"_oembed_4792fa4dfb2a8f09ab950a73b7f313ba":null,"_oembed_33ceb1fe54a8ab775d9410abf699878d":null,"_oembed_fd7014d14d919b45ec004937c0db9335":null,"_oembed_21a029d076783ec3e8042698c351bd7e":null,"_oembed_be5ea8a0c7b18e658f08cc571a909452":null,"_oembed_a9ca7a298b19f9b48ec5914e010294d2":null,"_oembed_f8db6b27d08a2bb1f920e7647808899a":null,"_oembed_168ebde5096e77d8a89326519af9e022":null,"_oembed_cdb76f1b345b42743edfe25481b6f98f":null,"_oembed_87b0613611ae54e86e8864265404b0a1":null,"_oembed_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_oembed_time_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_tldname":null,"_tldclean":null,"_tldpreis":null,"_tldcategory":null,"_tldsubcategory":null,"_tldpolicy":null,"_tldpolicylink":null,"_tldsize":null,"_tldregistrierungsdauer":null,"_tldtransfer":null,"_tldwhoisprivacy":null,"_tldregistrarchange":null,"_tldregistrantchange":null,"_tldwhoisupdate":null,"_tldnameserverupdate":null,"_tlddeletesofort":null,"_tlddeleteexpire":null,"_tldumlaute":null,"_tldrestore":null,"_tldbildname":null,"_tldbildurl":null,"_tld_bedeutung":null,"_tldbesonderheiten":null,"_oembed_ad96e4112edb9f8ffa35731d4098bc6b":null,"_oembed_8357e2b8a2575c74ed5978f262a10126":null,"_oembed_3d5fea5103dd0d22ec5d6a33eff7f863":null,"_eael_widget_elements":null,"_oembed_0d8a206f09633e3d62b95a15a4dd0487":null,"_oembed_time_0d8a206f09633e3d62b95a15a4dd0487":null,"_aioseo_description":null,"_eb_attr":null,"_eb_data_table":null,"_oembed_819a879e7da16dd629cfd15a97334c8a":null,"_oembed_time_819a879e7da16dd629cfd15a97334c8a":null,"_acf_changed":null,"_wpcode_auto_insert":null,"_edit_last":null,"_edit_lock":null,"_oembed_e7b913c6c84084ed9702cb4feb012ddd":null,"_oembed_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_time_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_03514b67990db061d7c4672de26dc514":null,"_oembed_time_03514b67990db061d7c4672de26dc514":null,"rank_math_news_sitemap_robots":null,"rank_math_robots":null,"_eael_post_view_count":"1365","_trp_automatically_translated_slug_ru_ru":null,"_trp_automatically_translated_slug_et":null,"_trp_automatically_translated_slug_lv":null,"_trp_automatically_translated_slug_fr_fr":null,"_trp_automatically_translated_slug_en_us":null,"_wp_old_slug":null,"_trp_automatically_translated_slug_da_dk":null,"_trp_automatically_translated_slug_pl_pl":null,"_trp_automatically_translated_slug_es_es":null,"_trp_automatically_translated_slug_hu_hu":null,"_trp_automatically_translated_slug_fi":null,"_trp_automatically_translated_slug_ja":null,"_trp_automatically_translated_slug_lt_lt":null,"_elementor_edit_mode":null,"_elementor_template_type":null,"_elementor_version":null,"_elementor_pro_version":null,"_wp_page_template":null,"_elementor_page_settings":null,"_elementor_data":null,"_elementor_css":null,"_elementor_conditions":null,"_happyaddons_elements_cache":null,"_oembed_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_time_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_time_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_59808117857ddf57e478a31d79f76e4d":null,"_oembed_time_59808117857ddf57e478a31d79f76e4d":null,"_oembed_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_time_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_81002f7ee3604f645db4ebcfd1912acf":null,"_oembed_time_81002f7ee3604f645db4ebcfd1912acf":null,"_elementor_screenshot":null,"_oembed_7ea3429961cf98fa85da9747683af827":null,"_oembed_time_7ea3429961cf98fa85da9747683af827":null,"_elementor_controls_usage":null,"_elementor_page_assets":[],"_elementor_screenshot_failed":null,"theplus_transient_widgets":null,"_eael_custom_js":null,"_wp_old_date":null,"_trp_automatically_translated_slug_it_it":null,"_trp_automatically_translated_slug_pt_pt":null,"_trp_automatically_translated_slug_zh_cn":null,"_trp_automatically_translated_slug_nl_nl":null,"_trp_automatically_translated_slug_pt_br":null,"_trp_automatically_translated_slug_sv_se":null,"rank_math_analytic_object_id":null,"rank_math_internal_links_processed":"1","_trp_automatically_translated_slug_ro_ro":null,"_trp_automatically_translated_slug_sk_sk":null,"_trp_automatically_translated_slug_bg_bg":null,"_trp_automatically_translated_slug_sl_si":null,"litespeed_vpi_list":null,"litespeed_vpi_list_mobile":null,"rank_math_seo_score":null,"rank_math_contentai_score":null,"ilj_limitincominglinks":null,"ilj_maxincominglinks":null,"ilj_limitoutgoinglinks":null,"ilj_maxoutgoinglinks":null,"ilj_limitlinksperparagraph":null,"ilj_linksperparagraph":null,"ilj_blacklistdefinition":null,"ilj_linkdefinition":null,"_eb_reusable_block_ids":null,"rank_math_focus_keyword":"PHP-FPM Children","rank_math_og_content_image":null,"_yoast_wpseo_metadesc":null,"_yoast_wpseo_content_score":null,"_yoast_wpseo_focuskeywords":null,"_yoast_wpseo_keywordsynonyms":null,"_yoast_wpseo_estimated-reading-time-minutes":null,"rank_math_description":null,"surfer_last_post_update":null,"surfer_last_post_update_direction":null,"surfer_keywords":null,"surfer_location":null,"surfer_draft_id":null,"surfer_permalink_hash":null,"surfer_scrape_ready":null,"_thumbnail_id":"17351","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/posts\/17358","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/comments?post=17358"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/posts\/17358\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/media\/17351"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/media?parent=17358"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/categories?post=17358"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/tags?post=17358"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}