Springe zum Inhalt

Knapp zwei Jahren wurde dieses Blog durch HHVM angetrieben. Obwohl die Unterstützung vieler PHP-Funktionen in der Vergangenheit nicht immer zufriedenstellend war, so war die Geschwindigkeit doch immer ein Hauptvorteil von HHVM. Mit zunehmender Serviceanzahl, drängte sich jedoch ein Problem immer mehr in den Vordergrund: viele Dienste benötigen einen Cronjob, welche ebenfalls in PHP realisiert sind.  HHVM per CLI ist einfach zu speicherhungrig. Den Speicherhunger kann man schön in folgender Grafik erkennen:

HHVM PHP memory-day

In der linken Hälfte sieht man die HHVM-Cronjobs immer schön als Zacken. Nach der Umstellung auf PHP-FPM rechts ist wieder jede Menge Luft.

Wirklich schwierig war die Umstellung nach der Installation von PHP mit "apt install php5-fpm" (und einiger weiterer php5-Pakete) nicht. In jeder Host-Definitionsdatei für NGINX unter /etc/nginx/sites-enabled hatte ich bereits einen Eintrag "include hhvm.conf". Dieser wurde einfach durch "include php5-fpm.conf" ersetzt, wobei diese Datei folgenden Inhalt hat:

location ~ \.php$ {
	include snippets/fastcgi-php.conf;
	fastcgi_pass unix:/var/run/php5-fpm.sock;
}

Nach einem "nginx -s reload" wird dann sofort PHP benutzt. Einige dauernd laufenden Dienste auf PHP-Basis mussten noch mit einem "systemctl restart ..." neu gestartet werden und fertig war die Umstellung.

Von Seiten der Zugriffszeit erwarte ich eigentlich keine großen Änderungen, da die generierten Seiten jetzt schon dauerhaft per Memcached ausgeliefert werden. Eine Statistik der durch Google in den Webmaster-Tools gemessenen Zeiten hänge ich für einen späteren Vergleich mal an:

GWT blog.tausys.de Crawling 2016-07-05 22-50-34

6

HHVM ist eine virtuelle Maschine für HipTop, welches PHP-Skripte in Maschinencode übersetzt und anschließend ausführt. Die übersetzten Skripte werden gespeichert und bei wiederholtem Aufrufwerden die bereits übersetzte Programm ausgeführt. Dadurch ergibt sich eine extreme Leistungssteigerung gegenüber der bisher üblichen Methode, PHP-Skripte durch mod_php oder PHP per FastCGI immer wieder neu zu analysieren und auszuführen. ...weiterlesen "Gezähmter HHVM"

Nach einem aktuellen Update konnte HHVM auf einmal keine Verbindung mehr zu MySQL bzw. MariaDB aufnehmen. Grund ist der, dass der MySQL-Socket nun wohl unter /tmp/mysql.sock gesucht wird, wo er nicht liegt. Unter Debian liegt er vielmehr unter /var/run/mysqld/mysqld.sock. In der /etc/hhvm/server.ini ist daher folgende Einstellung einzutragen:

hhvm.mysql.socket = /var/run/mysqld/mysqld.sock

Nach einem Neustart von HHVM funktionierts dann auch wieder mit HHVM und MySQL über den Socket.

Sofern man HHVM aus dem entsprechenden Wheezy-Repositiory installiert hat, kann HHVM aktuell nicht auf Version 3.4.1 aktualisiert werden. Vom Paket vorausgesetzt wird die Version 4.9 von libstdc++6, in Wheezy ist jedoch nur Version 4.8 vorhanden.

Der Paketmaintainer arbeitet an einer Lösung und hat diese für das Jahresende angekündigt.

Update vom 22.12.2014: Das Problem ist offensichtlich mit Version 3.4.2 von HHVM behoben.