PHP workers

PHP workers verwerken de PHP code van een site. Denk hierbij aan het bouwen van pagina’s, het verwerken van achtergrondtaken, het bevragen van de database, enzovoort.

Je kunt PHP workers vergelijken met werknemers in een winkel. Elke worker kan maar één verzoek per keer verwerken. Als er meer klanten zijn dan workers, moeten die klanten (processen) in de rij gaan staan en wachten op de volgende beschikbare worker om hun verzoek af te handelen.

PHP workers komen pas echt van pas als een site de meeste inhoud niet in de cache heeft of kan opslaan. Hoe dynamischer een website is, hoe meer PHP workers deze waarschijnlijk nodig heeft. Gecachte content heeft geen PHP workers nodig; ze zijn eigenlijk alleen nodig als de site de database moet raadplegen om informatie op te vragen of te wijzigen.

Als het gaat om de prestaties van WordPress, betekenen meer PHP workers niet automatisch betere prestaties; er zijn een aantal factoren die je in overweging moet nemen:

  • Caching: Effectieve caching kan de werkdruk op PHP workers verminderen door gecachede content te leveren in plaats van deze dynamisch te genereren voor elk verzoek. Dit kan de prestaties aanzienlijk verbeteren, vooral voor vaak opgevraagde bronnen.
  • Hardware: De beschikbare hardware resources op de server, zoals CPU, geheugen (RAM) en schijfsnelheid, hebben een directe invloed op de prestaties van PHP workers. Onvoldoende resources kunnen leiden tot langzamere verwerkingstijden en slechtere prestaties.
  • Setup van de webserver: De configuratie van de webserver en zijn interactie met PHP kan de prestaties van de worker beïnvloeden.
  • Snelheid database: PHP applicaties halen vaak gegevens op uit MySQL databases om dynamische content te renderen. De snelheid waarmee gegevens worden opgehaald wordt beïnvloed door zaken als hoe de database is georganiseerd, hoe queries zijn geoptimaliseerd en hoe goed de databaseserver presteert. Dit heeft direct invloed op hoe goed PHP applicaties draaien.
  • PHP versie: Nieuwere versies van PHP resulteren vaak in betere prestaties van PHP workers door prestatieverbeteringen, bugfixes en beveiligingsupdates.

Bij Kinsta hechten we veel waarde aan de prestaties van je site. Daarom hebben we verschillende technologieën geïmplementeerd die gericht zijn op het maximaliseren van PHP prestaties en het minimaliseren van PHP requests:

  • We bieden pagina-caching op zowel CDN als serverniveau, met aanpasbare regels om maximale cache-efficiëntie te garanderen.
  • We gebruiken premium servers bij GCP (C2 en C3D virtuele machines) die zijn uitgerust met de snelste CPU’s van Google Cloud om de PHP workers van je site efficiënter te laten werken.
  • Onze schaalbare infrastructuur zorgt ervoor dat de PHP workers van je WordPress site genoeg CPU-resources hebben om optimaal te presteren.
  • We maken gebruik van een eersteklas netwerkinfrastructuur bij Google Cloud Platform (GCP) om latency te minimaliseren. Door gebruik te maken van het premium netwerk van GCP verkorten we de tijd die gegevens nodig hebben om te reizen tussen verschillende onderdelen van onze infrastructuur, waaronder de MySQL server en webservers, aanzienlijk.
  • We bieden een sterk geoptimaliseerde MySQL server die lokaal wordt gehost om de latency van het netwerk te verminderen en het ophalen en verwerken van gegevens te versnellen.
  • Op de MySQL server hebben we InnoDB buffers om de databaseprestaties te helpen verbeteren door schijf-I/O operaties te verminderen. Gegevens kunnen sneller worden benaderd vanuit het geheugen in plaats van vanaf de schijf, waardoor lees- en schrijfbewerkingen efficiënter verlopen en de algehele prestaties van de MySQL database verbeteren.
  • We zorgen ervoor dat altijd de nieuwste versie van PHP beschikbaar is om eventuele prestatieverbeteringen te integreren.

WordPress en PHP workers

Een ongecacht verzoek op een WordPress site gaat meestal ongeveer zo:

  1. Een bezoeker bezoekt een pagina of voert een actie uit op een pagina (bijvoorbeeld iets toevoegen aan een winkelwagentje, een formulier invullen, enzovoort).
  2. De webserver (Nginx hier bij Kinsta) ontvangt dat verzoek.
  3. Nginx geeft het verzoek door aan PHP.
  4. PHP bevraagt de MySQL database en krijgt de informatie die het nodig heeft of voert de benodigde updates uit.
  5. PHP gebruikt dan de PHP bestanden van je thema (en eventuele plugin-bestanden) om een HTML pagina te genereren.
  6. PHP geeft de gerenderde HTML pagina terug aan de webserver.
  7. De pagina wordt geleverd aan de bezoeker.

In het hierboven beschreven proces kost stap 4 de meeste tijd en resources (CPU en RAM). Een goed geoptimaliseerde site met efficiënte PHP code en database queries zal deze stap vrij snel verwerken.

Slecht geschreven of niet-geoptimaliseerde PHP code en/of veel inefficiënte database queries zullen er daarentegen veel langer over doen om stap 4 te doorlopen. Verzoeken die langer duren om te verwerken houden PHP workers bezig voor langere tijd.

Het aantal benodigde PHP workers schatten

Hoeveel workers een site nodig heeft hangt af van verschillende factoren, zoals: hoe dynamisch de site is, hoe geoptimaliseerd de code van de site is (hoe snel verzoeken kunnen worden verwerkt) en wat voor soort verkeer de site ontvangt. Een geoptimaliseerde site handelt verzoeken snel af, waardoor PHP workers vrij zijn voor het volgende verzoek in de wachtrij.

Dynamische sites zoals e-commerce winkels, forums, leersites en lidmaatschapssites hebben meestal meer PHP workers nodig dan meer statische, brochure-achtige sites. En hoe drukker een site is, hoe meer PHP workers deze meestal nodig heeft.

Kinsta pakketten en PHP workers

De volgende tabel laat zien hoeveel PHP workers in elk pakket van Kinsta zijn inbegrepen:

Pakket PHP workers
Starter 2 PHP workers
Pro 2 PHP workers/site
Business 1 4 PHP workers/site
Business 2 4 PHP workers/site
Business 3 6 PHP workers/site
Business 4 6 PHP workers/site
Enterprise Vanaf 8 PHP workers/site
Single-site pakket 6 PHP workers
Agency pakket 6 PHP workers/site

We bieden ook op maat gemaakte pakketten waarbij je zelf kunt aangeven hoeveel PHP workers je nodig hebt. Neem voor meer informatie contact op met ons salesteam.

PHP workers, CPU en RAM

Bij het toevoegen van PHP workers moet je rekening houden met CPU en RAM resources. Als je het aantal PHP workers verhoogt, maar de server heeft meer CPU en RAM nodig om die workers te ondersteunen, dan zal dit een knelpunt veroorzaken omdat de verzoeken niet efficiënt zullen worden afgehandeld.

Hier bij Kinsta zijn onze aangepaste LXD containers geconfigureerd met voldoende CPU en RAM resources. Daarnaast helpen we de PHP workers van je site efficiënter te werken door gebruik te maken van C2 en C3D virtuele machines die zijn uitgerust met de snelste CPU’s van Google Cloud. Onze schaalbare infrastructuur zorgt ervoor dat de PHP workers van je WordPress site genoeg CPU resources hebben om optimaal te presteren.

Prestatieproblemen met betrekking tot PHP workers identificeren

Als er te veel verzoeken in de wachtrij staan door een grote toestroom van verzoeken, langlopende processen of een combinatie van beide, kan de site prestatieproblemen ondervinden die kunnen resulteren in 502 of 504 fouten.

Het gebruik van tools zoals Kinsta’s APM tool en de Query Monitor plugin kunnen je helpen bij het identificeren van prestatieproblemen en trage queries. We raden ook aan om samen te werken met een gekwalificeerde prestatie-expert om problemen te diagnosticeren.

Klik op de knop APM inschakelen om het in te schakelen in MyKinsta.
Klik op de knop APM inschakelen om het in te schakelen in MyKinsta.

PHP worker limiet

Je hebt toegang tot de PHP worker limiet grafiek in MyKinsta > WordPress Sites > sitename > Analytics > Prestaties > PHP worker limiet. Als een PHP worker 10 seconden lang niets te doen heeft, wordt het PHP worker proces automatisch beëindigd. Zodra het weer nodig is, wordt het worker proces direct opnieuw aangemaakt. Deze grafiek laat zien hoe vaak het maximum aantal toegewezen workers op je site is bereikt.

Als je bijvoorbeeld een Business 1 pakket hebt, dan staat dit maximaal 4 PHP worker processen toe. Als er 3 PHP workers in gebruik zijn en er wordt een ander verzoek gedaan op je site waarvoor een PHP worker nodig is, dan wordt bij het aanmaken van de PHP worker het maximum aantal van 4 PHP workers bereikt en wordt dit gelogd als een incident waarbij de limiet van de PHP worker is bereikt.

Dit geeft je mogelijk slechts een gedeeltelijk beeld van je PHP worker activiteit, omdat dit alleen het aantal keren registreert dat de PHP worker limiet is bereikt en niet hoe lang alle PHP workers in gebruik waren.

Als je site bijvoorbeeld een enorme verkeersdrukte ervaart, kan het zijn dat alle PHP workers een heel uur lang constant bezig blijven zonder inactieve tijd en daarom helemaal niet worden afgesloten tijdens dat uur. Dit zou slechts worden geregistreerd als één geval waarin de limiet van de PHP workers is bereikt, en daarom kan het lijken alsof de PHP workers gedurende dat uur niet bezet waren, terwijl ze in feite allemaal de hele tijd actief waren. Na 30 minuten, als er een afname in verkeer is waardoor een PHP worker 10 seconden niet actief is, wordt deze automatisch beëindigd. Als de PHP worker echter binnen een minuut weer nodig is, wordt het maximum aantal PHP workers weer bereikt, waardoor er weer een PHP worker limiet wordt gelogd.

Als je de websiteprestaties onderzoekt en vaststelt of je site continu zijn PHP workers gebruikt, kun je de activiteit van PHP workers controleren met tools in een SSH sessie. Het volgende aangepaste commando controleert bijvoorbeeld elke 0,3 seconden het aantal actieve PHP workers:

watch -n 0.3 “ps aux | awk ‘\$(NF-2) ~ /php-fpm/ && \$(NF-1) ~ /pool/ && \$8 ~ /R/ { print \$0 }’ | wc -l"

Om deze opdracht af te sluiten, druk je op CMD + C of CTRL + C en laat je beide toetsen los.

PHP worker limiet
PHP worker limiet

Cache analyse

De cache analyse sectie in MyKinsta cache analytics kan worden gebruikt om het totaal aantal cacheverzoeken en de top cache bypasses van je site te bekijken.

Cache - cache component grafiek
Cache – cache component grafiek
Cache - top cache bypasses
Cache – top cache bypasses

Gebruik van PHP workers verminderen en optimaliseren

Caching

Caching is je beste vriend als het gaat om het optimaliseren van je site en het verminderen van het aantal benodigde PHP workers. Onthoud dat PHP workers niet nodig zijn voor inhoud uit de cache, dus cache alles wat je kunt.

Pagina caching

Bij Kinsta verzorgen we pagina caching voor je; alle sites gebruiken de FastCGI cache module van Nginx voor supersnelle prestaties.

Object caching

Het toevoegen van een persistent object cache zoals Redis voor je database kan de prestaties verbeteren en de behoefte aan PHP workers verminderen. Zonder object caching worden MySQL database queries uitgevoerd voor elk verzoek, zelfs als het dezelfde query en resultaten zijn.

Redis slaat de resultaten van database queries op in RAM zodat PHP die resultaten kan ophalen zonder de query opnieuw uit te voeren. Het verwijderen van de noodzaak voor herhalende database queries zorgt ervoor dat PHP workers resources kunnen besparen en verzoeken efficiënter kunnen uitvoeren.

Bekijk onze premium add-ons voor meer informatie over het toevoegen van Redis cache aan je site.

Code optimalisatie

Zorg ervoor dat de code van je site zo efficiënt mogelijk is. Dit geldt voor custom code, themacode en plugincode. Als je het niet zeker weet, raden we je aan een developer te vragen de code van je site te controleren.

Custom code

Als je website je eigen (custom) code bevat in plugins of je thema, zorg er dan voor dat deze echt nodig is en goed geschreven.

Plugins

Kijk goed naar de plugins die op de site worden gebruikt en controleer of ze echt nodig zijn, geen dubbele functies bevatten en de beste optie zijn voor de behoefte die ze vervullen. Als er plugins zijn die niet compatibel zijn met de nieuwste versie van WordPress en PHP, is het misschien tijd om andere opties te overwegen. Als je plugins op je site hebt die niet worden gebruikt, is het aan te raden om die te verwijderen.

Thema

Gebruik een lichtgewicht en goed presterend thema. Vermijd thema’s die functionaliteit bevatten die het beste via aparte plugins kan worden geïmplementeerd (zoals SEO, zoekfiltering, aangepaste velden, sliders/slideshows voor afbeeldingen, etc.) of die niet nodig zijn voor je site.

PHP bijwerken

Gebruik de nieuwste PHP versie voor snellere prestaties. PHP benchmarks laten zien dat elke PHP versie sneller is dan de vorige.

Kinsta’s CDN inschakelen

Het inschakelen van Kinsta’s CDN zorgt voor nog meer efficiëntie en optimalisatie voor je site. Kinsta’s CDN is onze hoogwaardige HTTP/3 CDN, ondersteund door Cloudflare, die je zonder extra kosten ter beschikking wordt gesteld. Als het is ingeschakeld, kan je site statische assets van locaties over de hele wereld leveren.

Overleg met een prestatie-expert

Als je bekend bent met siteoptimalisatie, is dit een optionele stap. Een expert kan je helpen om alle aspecten van je site te analyseren, knelpunten te identificeren en oplossingen te implementeren.

PHP herstarten

Bij Kinsta hebben we een geweldige feature die we zelfherstellende PHP noemen. Dit is handig als je een 502 foutmelding krijgt of als er iets anders misgaat. Als PHP om wat voor reden dan ook uitvalt, probeert ons systeem het automatisch weer op te starten. In veel gevallen is dit alles wat nodig is, en je kunt aan de slag!

In zeldzame gevallen kan het een groter probleem zijn. Ons systeem logt dit automatisch zodat ons Systems Administration (sysadmin) team dit kan controleren. Anders kun je PHP voor elk van je websites afzonderlijk opnieuw opstarten met een simpele klik op een knop vanuit MyKinsta.

PHP handmatig herstarten

Volg de onderstaande stappen om PHP opnieuw te starten op je WordPress site.

  1. Log in op MyKinsta.
  2. Ga naar WordPress sites en selecteer de site waarop je PHP opnieuw wilt opstarten.
  3. Ga naar het tabblad Tools en zoek naar de sectie PHP herstarten.
  4. Klik op de knop PHP herstarten.
Herstart PHP in MyKinsta.
Herstart PHP in MyKinsta.

Houd er rekening mee dat het opnieuw opstarten van PHP ongeveer 5-10 seconden duurt. Je krijgt een melding onderaan het scherm wanneer het is voltooid.

Opmerking: Je moet wellicht de cache van je site verwijderen om de wijzigingen te kunnen zien.

Kinsta’s PHP limieten

Als Managed WordPress diensten hebben we de optimale PHP instellingen geconfigureerd om het beste te werken met WordPress sites. Als je specifieke PHP vereisten hebt, voel je dan vrij om contact op te nemen met ons Support Team om je behoeften te bespreken.

Kinsta biedt PHP 8.0, 8.1, 8.2 en 8.3. Dit zijn de standaardinstellingen voor PHP:

  • memory_limit = 256M
  • post_max_size = 128M
  • upload_max_filesize = 128M
  • max_input_vars = 10000
  • max_execution_time = 300

Afhankelijk van je WordPress pakket kun je deze waarden indien nodig verhogen. Neem contact op met ons Support Team om uit te vinden welke opties voor jou beschikbaar zijn.

Kinsta’s PHP geheugenlimiet

Kinsta’s standaard PHP geheugenlimiet is 256MB, wat meer dan genoeg is voor de meeste WordPress plugins en sites. Deze limiet bestaat om te voorkomen dat PHP scripts te veel geheugen gebruiken. Als je de limiet te hoog instelt, kan een verkeerd geconfigureerd of kapot script ernstige problemen veroorzaken door te veel geheugen te gebruiken.

Als je site correct is ingesteld bij Kinsta, zou je niet tegen een geheugenlimietfout aan moeten lopen. Als je deze fout ziet, raden we je aan je WordPress instellingen te controleren om er zeker van te zijn dat deze niet per ongeluk te laag zijn ingesteld.

Als je een van Kinsta’s Business pakketten hebt en de PHP geheugenlimiet van een site wilt verhogen, kun je een PHP geheugenlimiet add-on kopen. De PHP geheugenlimiet add-on verhoogt het geheugen van 256MB naar 512MB voor een bedrag van $50 per site per maand. Om deze add-on aan te schaffen kun je contact opnemen met het Account Management team via de live chat in MyKinsta Dashboard of een e-mail sturen naar [email protected]. De add-on is momenteel alleen beschikbaar voor klanten met een Business abonnement; als je een Starter- of Pro pakket hebt, moet je upgraden naar een Business pakket om de add-on te kunnen kopen.

Je PHP geheugenlimiet controleren en wijzigen

Om je huidige PHP geheugenlimiet voor WordPress te controleren, log je in op het WordPress dashboard van je site en ga je naar Extra > Site Health.

Ga naar het tabblad Info en klik op het pijlpictogram naast het gedeelte Server om dit gedeelte uit te vouwen en je PHP geheugenlimiet te bekijken.

Als de geheugenlimiet lager is dan 256M, controleer dan je wp-config.php bestand om te zien of de WP_MEMORY_LIMIT is aangepast en pas het zo nodig aan.

Als de geheugenlimiet 256M is, maar je hebt problemen met PHP geheugen, dan raden we aan om plugins en thema’s te controleren en te testen. Je kunt een testomgeving gebruiken om plugins en thema’s veilig te deactiveren en opnieuw te activeren om de bron van het geheugengebruik te identificeren.

Als de fout blijft bestaan en je de bron niet kunt identificeren, kun je een nieuwe chat openen met ons Support team om de logs te controleren en problemen aan de serverzijde uit te sluiten.

PHP bijwerken

We hebben het bijwerken van de PHP versie van je site zo eenvoudig mogelijk gemaakt in MyKinsta.

Als je site klaar is om PHP bij te werken, log dan in op MyKinsta en ga naar WordPress Sites > sitenaam > Tools.

Klik onder PHP Engine op het uitklapmenu en selecteer de PHP versie waarnaar je je site wilt bijwerken.

Wijzig PHP engine knop in MyKinsta.
Wijzig PHP engine knop in MyKinsta.

Klik in het modal/popupvenster PHP versie wijzigen dat verschijnt op de knop Wijzig PHP versie om de wijziging te bevestigen.

Wijzig PHP versie.
Wijzig PHP versie.

Aan het einde van de update wordt je PHP engine opnieuw opgestart en kan de backend (WordPress dashboard) van je site een paar seconden down zijn. De voorkant van de site blijft in de lucht en bezoekers zullen geen downtime ervaren.

Terwijl het updateproces loopt, kun je navigeren naar andere delen van MyKinsta, maar sommige acties, zoals cachebeheer, zullen niet beschikbaar zijn totdat de PHP engine opnieuw is opgestart.

Zodra de update is voltooid (meestal binnen 3 minuten of minder), ontvang je een melding in MyKinsta dat deze is voltooid.

PHP modules

De volgende PHP modules zijn standaard geïnstalleerd op je WordPress site op Kinsta:

  • bcmath
  • bz2
  • calendar
  • Core
  • ctype
  • curl
  • date
  • dom
  • exif
  • FFI
  • fileinfo
  • filter
  • ftp
  • gd
  • gettext
  • hash
  • iconv
  • igbinary
  • imagick
  • imap
  • intl
  • json
  • libxml
  • mbstring
  • mysqli
  • mysqlnd
  • openssl
  • pcntl
  • pcre
  • PDO
  • pdo_mysql
  • Phar
  • posix
  • readline
  • redis
  • Reflection
  • session
  • shmop
  • SimpleXML
  • soap
  • sockets
  • sodium
  • SPL
  • standard
  • sysvmsg
  • sysvsem
  • sysvshm
  • tokenizer
  • xml
  • xmlreader
  • xmlwriter
  • xsl
  • Zend OPcache
  • zip zlib

ionCube is niet standaard geïnstalleerd, maar kan worden ingeschakeld als je site PHP 8.1 draait binnen MyKinsta > WordPress Sites > sitenaam > Tools > ionCube loader > Inschakelen.

Als je vragen hebt over een specifieke PHP module die niet in de bovenstaande lijst staat, neem dan contact op met het supportteam van Kinsta.