Minder cpu verbruik workers

Voor onze klant draaien we momenteel vele tientallen worker instances die continu opdrachten via de command line uitvoeren. Deze applicatie is gebouwd met Symfony, draait op PHP 8.1 en is uitgerold op het Amazon ECS-platform.

Het CPU-verbruik blijkt echter vrij hoog te zijn, zelfs wanneer deze workers alleen een eenvoudige "hello world" actie uitvoeren. Dit wordt veroorzaakt doordat er standaard geen opcache beschikbaar is voor PHP-commando's die via de command line worden uitgevoerd. Hierdoor moeten bij elke opdracht alle PHP-bestanden die nodig zijn voor het opstarten van de opdracht worden geïnterpreteerd zonder enige optimalisatie. Vooral bij een volwassen applicatie zoals die gebaseerd op het Symfony-framework zijn er behoorlijk wat bestanden betrokken.

Om dit probleem aan te pakken, hebben we opcache ingeschakeld zonder gebruik te maken van shared memory. Hierdoor kan de applicatie toch profiteren van opcache-optimalisaties.

Dit heeft geleid tot de volgende voordelen:

  • Aanzienlijk lager baseline CPU-verbruik in de Docker-containers waarin de workers draaien.
  • Kortere uitvoeringstijd voor het "hello world" commando, van ongeveer 3 seconden naar 300 milliseconden.

Het resultaat is zowel kostenbesparing als prestatieverbetering.

Gemiddeld en maximum cpu gebruik van de worker voor en na de optimalisatie; op 0.25 vcpu (Intel) Fargate task in AWS ECS:




Datum: Juni, 2023

Wat is PHP Opcache?

PHP OPcache is een ingebouwde caching-extensie voor PHP die de prestaties verbetert door vooraf gecompileerde script-bytecode op te slaan in gedeeld geheugen. Het elimineert de noodzaak van repetitieve compilatie en parsing, wat resulteert in snellere uitvoering van PHP-scripts.

OPcache slaat de gecompileerde code op in het geheugen, waardoor de schijf-I/O en CPU-overhead voor scriptuitvoering worden verminderd. Door het bytecode te cachen, vermindert OPcache de responstijd van de server en verbetert het de algehele prestaties van PHP-toepassingen.

Het is een waardevol hulpmiddel voor het optimaliseren van op PHP gebaseerde websites en toepassingen, waardoor serverbronnen efficiënt worden benut en de gebruikerservaring wordt verbeterd.