Van nginx+PHP-FPM met memcached en APC naar nginx+HHVM

Ik draai nu een aantal weken op de combinatie van nginx en HHVM, waar ik eerder gebruik maakte van nginx en php-fpm, memcached en APC om de website www.maartenvandekamp.nl snel te serveren aan bezoekers.

Het grootste verschil is het geheugengebruik en de configuratie van MySQL.

Vroeger

Eerst draaide www.maartenvandekamp.nl op een nginx webserver met php-fpm als PHP daemon. Op een gegeven moment merkte ik dat het een seconde kon duren voordat een pagina getoond werd en dat vond ik te lang. Daarom besloot ik om APC toe te voegen zodat geparste PHP code gecached werd in het geheugen, wat de hoeveelheid rekentijd verminderde.

Dat bleek deels te helpen, maar alsnog duurde het soms lang voordat alle content geladen was. Daarom besloot ik om ook memcached te gaan gebruiken. De eerste keer dat een pagina bezocht werd, kon memcached nog niets serveren omdat het nog niet in de cache stond. Maar de tweede keer dat een pagina opgevraagd werd, kon dit wel uit de cache gehaald worden. Hierdoor werd MySQL minimaal belast en deze was geconfigureerd op minimaal gebruik.

Nu

Toen schakelde ik over op HHVM, na een paar dagen testen met deze blog. APC en memcached waren niet meer nodig omdat HHVM vele malen sneller is en minder resources nodig heeft. De grote uitdaging was nu de MySQL database, want de configuratie was niet geschikt voor de nieuwe situatie. De database klapte er regelmatig uit.

Nu wordt alle informatie direct uit de database gehaald, waardoor deze veel sneller queries moet kunnen verwerken dan eerder. Alle lagen van caching zijn er nu tussenuit, wat gelukkig het refreshen van de cache bij een update overbodig maakt.

Resultaat

Het resultaat is dat de website sneller is geworden en de tijd om een pagina te laden verkort is.