Upgrade auf HHVM 3.6.0 führt zu Problemen mit MySQL-Verbindungen

19.03.2015

Wer in diesen Tagen ein Upgrade auf HHVM Version 3.6.0 durchgeführt hat, musste danach eventuell Probleme mit MySQL-Verbindungen feststellen. Das liegt daran, dass beim build der aktuellen Version der Default-Pfad für den MySQL-Socket (unabsichtlich) geändert hat. Er scheint fälschlicherweise /tmp/mysql.sock zu sein - ein Socket also, der auf debian-basierten Systemen (also auch Ubuntu und Mint) normalerweise nicht vorhanden ist.

In vielen Fällen hilft ein Eintrag in /etc/hhvm/php.ini:

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

Wer allerdings via MySQL-PDO auf die Datenbank zugreift, dem scheint diese Einstellung nichts zu nützen (was ein separater Bug ist). PrestaShop zum Beispiel nutzt PDO wenn vorhanden. Abhilfe kann in dem Fall ein symbolischer Link auf den korrekten Socket schaffen:

ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock

In unserem Fall traten danach interessanterweise Probleme mit too many connections auf. Der MySQL-Befehl SHOW PROCESSLIST (braucht PROCESS-Rechte) zeigte, dass HHVM ungefähr eine neue Verbindung pro HTTP-Request aufgebaut (und nicht wieder abgebaut) hat. So ist natürlich das Verbindungslimit schnell erreicht.

Die verschiedenen Bugs haben gezeigt, dass HHVM 3.6.0 zu meiden ist. Nach einem Downgrade auf eine frühere Version funktioniert nun alles wieder, und im Moment ist warten angesagt. In der Version 3.6.1 von HHVM soll das Problem gelöst sein.

Permalink: /blog/hhvm-3-6-0-problem-mysql.html

Kontakt