HHVM (HipHop Virtual Machine) voor Magento

HHVM (ook wel bekend onder de naam Hip Hop Virtual Machine) is een door Facebook ontwikkelde JIT compiler gebaseerd op de programmeertaal Hack. Hierbij vindt de JIT-compilatie plaats in de interpreter (virtuele machine). De code van het script wordt hierbij omgezet naar machinetaal (bytecode) en doorgezet naar de processor (CPU) om te worden uitgevoerd.

Daarnaast wordt de machinetaal die het resultaat is van de compilatie opgeslagen. De volgende keer dat dezelfde code uitgevoerd moet worden (denk hierbij aan functies die vaker worden aangeroepen) hoeft deze niet meer gecompileerd te worden en wordt de bijbehorende machinetaal direct aan de processor gegeven om uitgevoerd te worden. Simpel gezegd betekend dit dus in de praktijk dat de compilatie voor de éérste bezoeker wordt gedaan maar daarna direct niet bij iedere bezoeker opnieuw hoeft te gebeuren.

Bij de traditionele PHP interpreter is het zo dat iedere keer dat de pagina bezocht wordt de scripts worden omgezet en aan de processor worden doorgegeven. Doordat de processor de gecompileerde machinetaal veel sneller kan doorgeven als bij de PHP interpreter kan dit veel snelheidswinst (300-400%) opleveren.

Bij bijvoorbeeld Magento (maar ook andere CMS-systemen) is het vaak zo dat er een grote hoeveelheid PHP scripts verwerkt wordt per bezoek. Hierdoor kan het dus interessant zijn om HHVM in te gaan zetten om de gemiddelde laadtijd van pagina’s flink te verlagen. We zullen de exacte verschillen in een later artikel uiteen zetten met testresultaten.

Op dit moment zijn al een groot aantal extensies waarvoor ondersteuning is in HHVM:

Apache
APC
APD
cUrl
DOM
Hash
Image (gd)
ImageMagick (Imagick)
IMAP
tl (partially — e.g., missing NumberFormatter right now)
IPC
JSON
LDAP
Mailparse
MB
MCrypt
Memcache
Memcached
In
MySQL
PDO
PHAR
POSIX
PReg
SimpleXML
SOAP
SPL
SQLite3
XML
XSL
ZLib

Een van de grootste afwezigen is IonCube, een groot aantal extensies voor Magento maakt hier gebruik van waardoor dit op dit moment niet naar behoren zal werken. Ook bij sommige andere CMS-systemen is IonCube vereist waardoor ook deze niet zullen werken op HHVM.

Is HHVM de oplossing?

HHVM heeft zich in de loop der jaren natuurlijk al bewezen als betrouwbaar platform voor Facebook. Nu ook de ondersteuning voor PHP er is, zal HHVM voor steeds meer zaken kunnen worden ingezet.

Een belangrijk probleem is, zoals ook hierboven al aangegeven, dat HHVM nog steeds niet alle functionaliteiten ondersteund welke wel reeds in PHP zitten. Zo zijn niet alle PHP modules die gebruikt worden zijn beschikbaar voor HHVM. Er wordt wel gewerkt aan ondersteuning voor deze functionaliteiten maar op dit moment is dit nog niet beschikbaar.

Vaak is vooraf niet exact bekend welke extensies / functionaliteiten een website (CMS) nodig heeft waardoor niet altijd vooraf te garanderen is of het mogelijk is jouw website op HHVM te draaien. Op het moment van schrijven zal de toekomst moeten uitwijzen of HHVM een goed alternatief zal zijn.

Optimalisatie

De optimalisatie voor Magento is cruciaal voor een snelle laadtijd. Echter valt of staat alles met de basis, namelijk een juiste opbouw van de Magento installatie. Wanneer er problemen zijn in de opbouw (bijvoorbeeld met de template, modules of configuratie instellingen) dan zijn er wel mogelijkheden voor optimalisatie maar dan is niet de maximale performance te behalen.

De afgelopen jaren zijn er al heel wat verschillende technieken door ons onderzocht en actief geïntegreerd voor diverse klanten. Onderstaand een overzicht van de technieken die te gebruiken zijn en wat de voordelen van de diverse technieken zijn:

Standaard optimalisatie (webwinkel):

Op onze blog staat een uitgebreid artikel over de mogelijkheden voor optimalisatie. Wij adviseren dit voor iedere webwinkel door te voeren voor een optimale snelheid. Bekijk het artikel hier: Magento 1 optimaliseren

Dienst(en):
Van toepassing op alle diensten. We adviseren met klem deze optimalisaties door te voeren.

Clean up script:

Magento heeft de eigenschap heel veel zaken bij te houden maar het regelmatig opruimen zit niet standaard inbegrepen. We zien regelmatig dat een webwinkel hierdoor in de frontend en/of backend trager wordt. Wij hebben daarom een clean up script ontwikkeld waarmee het mogelijk is de opschoning van deze zaken automatisch in te plannen. Het clean up script inclusief handleiding is te vinden op onze blog: Snelheidswinst Magento door opschonen logtabellen en cachefolders.

Dienst(en):
Van toepassing op alle diensten. We adviseren met klem deze optimalisaties door te voeren.

Full page cache module:

Er zijn diverse Full page cache modules verkrijgbaar voor Magento. Hiermee is het mogelijk statische content in uw webwinkel in de cache voor te laden en snel uit te serveren. Wij hebben de beste ervaringen met Lesti FPC hiervoor.

Dienst(en):
Shared Magento Hosting: Optioneel, installatie service mogelijk.
Magento Hosting Plus: Optioneel als uitbreiding af te nemen.
Magento Servers: n.v.t.
Magento Enterprise: n.v.t.

Varnish:

Varnish is een reverse proxy welke alle statische content in de cache kan laden en hierdoor snel kan uitserveren. Het nadeel is dat het lastig te configureren is, wij verzorgen dit bij afname van een van de betreffende diensten (kosteloos) voor je. Bekijk hier alles over Varnish.

Dienst(en):

Shared Magento Hosting: Niet mogelijk.
Magento Hosting Plus: Niet mogelijk.
Magento Servers: Mogelijk.
Magento Enterprise: Mogelijk.

Redis:

Redis is een relatief nieuw cache systeem. Waar voorheen vaak Memcache werd ingezet wordt er nu vaak voor Redis gekozen.
Met Redis kun je grote delen van je webwinkel opslaan in de Redis server waardoor het snel kan worden ingeladen. Vanaf Magento CE 1.8 wordt Redis standaard ondersteund maar ook bij lagere versies is integratie van Redis mogelijk. Daarnaast is het mogelijk Redis te combineren met een module om ook Full Page Cache te gebruiken. Bekijk hier alles over Redis.

Dienst(en):
Shared Magento Hosting: Niet mogelijk.
Magento Hosting Plus: Optioneel als uitbreiding af te nemen.
Magento Servers: Mogelijk.
Magento Enterprise: Mogelijk.

Nginx:

Op de meeste systemen maken wij gebruik van Apache als webserver. Nginx is een alternatieve, lichtere webserver dan Apache.
Nginx gaat slimmer om met het geheugen van de server en is (mede daardoor) iets sneller.  Het nadeel is wel dat Nginx iets lastiger te gebruiken / configureren (.htaccess configuratie) is.

Dienst(en):
Shared Magento Hosting: Niet mogelijk.
Magento Hosting Plus: Niet mogelijk.
Magento Servers: Mogelijk.
Magento Enterprise: Mogelijk.

HipHop/HHVM:

Zoals hierboven al beschreven is HHVM een alternatieve PHP processor welke ervoor zorgt dat PHP scripts sneller worden uitgevoerd.
Dit is de nieuwste techniek om CMS-systemen zoals bijvoorbeeld Magento en WordPress flink te kunnen versnellen.

Dienst(en):
Shared Magento Hosting: Niet mogelijk.
Magento Hosting Plus: Niet mogelijk.
Magento Servers: Mogelijk.
Magento Enterprise: Mogelijk.

HHVM bij Skyberate

Aangezien wij altijd bezig zijn om de nieuwste technieken voor u te onderzoeken bekijken en testen wij ook HHVM uitgebreid. Wil je weten of jouw website geschikt is voor HHVM dan kun je contact opnemen. Wij zullen dan een eerste onderzoek doen naar de mogelijkheden en eventueel een testomgeving hiervoor opzetten.