PHPGangsta - Der praktische PHP Blog

PHP Blog von PHPGangsta


APC „Potential cache slam averted for key XXX“

with 4 comments

Erst gestern bin ich wieder auf den folgenden „Bug“ (bzw. Feature) gestossen und musste den Workaround raussuchen, deshalb schreibe ich ihn jetzt hier nieder, vielleicht stösst ja auch jemand von euch mal darauf.

Es geht um die allseits beliebte APC Extension. Seit Version 3.1.3 (von August 2009) gibt es in APC einen Schutz gegen potentielle Race-Condition-Probleme bzw. einem Deadlock bzw. einem Cache-Slam (so genau weiß ich das auch nicht 😉 ). Es geht jedenfalls darum dass viele parallele bzw. aufeinander folgende APC-Schreibbefehle (apc_add()/apc_store()…) ein Problem auslösen können, und deshalb wurde eine Sperre eingebaut sodass auf einen Key nicht innerhalb kurzer Zeit mehrfach schreibend zugegriffen werden kann. Doch je nach Last auf der Maschine bzw. dem eingesetzten Script kann das durchaus vorkommen, und dann gibt es den Fehler:

Warning: Potential cache slam averted for key XXXXXXX

Beheben kann man diesen Fehler indem man auf eine ältere Version (3.1.2 sollte es tun) downgraded, sein Script ändert und die multiplen Schreibzugriffe auf einen Key entfernt bzw. begrenzt, oder die folgenden 2 Zeilen in die php.ini bzw. apc.ini einträgt:

apc.write_lock = 1
apc.slam_defense = 0

Gefolgt von einem Apache restart, und der Fehler ist weg.

Weitere Informationen sind verfügbar, es gibt sehr viele Leute die auf dieses Problem gestossen sind, also einfach nach der Fehlermeldung suchen falls man mehr darüber wissen möchte.

Written by Michael Kliewe

März 31st, 2012 at 11:52 am

Posted in PHP

Tagged with , , ,

4 Responses to 'APC „Potential cache slam averted for key XXX“'

Subscribe to comments with RSS or TrackBack to 'APC „Potential cache slam averted for key XXX“'.

  1. Da ich mal hoffe, dass dieser Schutz nicht ohne Grund in 3.1.3 eingebaut wurde – holt man sich damit nicht dieses Race-Condition-Problem/diesen Deadlock/Cache-Slam wieder ins Haus?

    GodsBoss

    31 Mrz 12 at 15:23

  2. Ich glaube durch das write_lock=1 Setting ist das ausgeschlossen. Aber bin mir da auch nicht 100% sicher.

    Michael Kliewe

    31 Mrz 12 at 15:33

  3. Der APC ist Fluch und Segen zugleich. Da kann man Stunden mit der Fehlersuche verbringen und oftmals gibt es keine richtige Lösung.

    Teilweise erledigen sich die Probleme dann von Geisterhand und alles läuft monatelang wieder gut.

    Das Problem ist allerdings, wenn man auf eine ältere Version downgraded, dann gibt es dafür meistens keinen Support oder den Hinweis eine neuere Version einzuspielen.

    Wichtig ist herauszufinden, welche Version für einen selbst gut funktioniert und diese nur dann upzudaten, wenn es wirklich notwendig ist.

    Dirk Helbert

    4 Apr 12 at 18:32

  4. Hello, tҺe whole thing iѕ going sound here and ofcourse every one
    is sharing data, that’s truly excellent, kᥱep up writing.

Leave a Reply

You can add images to your comment by clicking here.