Nachdem Dominik ein paar Benchmarks zu verschiedenen opcode Caches für PHP veröffentlich hat, möchte ich auch ein paar Erfahrungen von mir beisteuern.

Ich habe auf verschiedenen (Linux) Servern schon seit langer Zeit (code) Caches für PHP eingesetzt, doch keiner hat bisher so funktioniert, dass ich gut zufrieden war. Die Geschwindigkeit ist dabei weniger das Problem, als die Stabilität.

Und damit stehe ich leider nicht alleine da. Auch in diesem Blogbeitrag zu eAccelerator finden sich Kommentare, in denen die Stabilitätsprobleme beschrieben werden, vor allem Apache crashes, die durch crashes (segfault) von PHP bzw. der Zend Engine ausgelöst werden.

Da ich bei einem neuen Server nicht auf die immensen Geschwindigkeitsvorteile eines op-code Caches verzichten wollte, habe ich etwas mehr experimenterit. Die Hardware ist AMD64 mit zwei CPU Kernen, 4 GB Ram und Ubuntu Gutsy und PHP als FastCGI (PHP 5.2.3).

Schon seit der eAccelerator noch turck mmCache hieß, habe ich ihn verwendet – und bis heute hat sich die Instabilität stabil gehalten. Am besten so, dass sie sich schlecht reproduzieren läßt – die Hoffnung statt per „extension“ den Cache als „zend_extension“ zu laden wurde nur mit wenigen Stunden länger ohne Crashes belohnt.

Versuche mit APC sahen ähnlich aus. Dann der Wechsel zu xcache – wer etwas so geniales wie lighttpd baut, wird sicher auch einen guten opCode Cache für PHP erstellen können. Doch auch hier wieder: sefaults, php crash.

Schließlich der Hinweis auf die Read-only-protection von xcache – meines Wissens nach ein Feature, dass kein anderer opcode Cache bietet. Hier wird per doppeltem mmap sichergestellt, dass der Speicher nicht korrumpiert werden kann. Un in der Tat – seit über 24 Stunden stabil, auch mit dem akutellen phpbb3, welches bisher das Sorgenkind war.

Doch heute Abend war dann auch hier die Hoffnung verflogen.

[2005079.980997] php-cgi[30367]: segfault at 00000000fffffffe rip 000000000062da5f rsp 00007fff2e90fde0 error 4

Vielleicht ist die Geschwindigkeit dann doch weniger relevant als die Stabilität.