Zum Hauptinhalt Zur Navigation

Cache-Server: Memcached-Inhalte überleben Neustart

Die neue Version 1.5.18 des Cache-Servers Memcached kann Inhalte auch über Neustarts der Software hinweg erhalten. Dabei hilft eine Linux-Kernel -Funktion namens DAX (Direct Access).
/ Sebastian Grüner
4 Kommentare News folgen (öffnet im neuen Fenster)
Die von Memcached im Speicher vorgehaltenen Daten können künftig über Neustarts hinweg erhalten bleiben. (Bild: Christiaan Colen, flickr.com)
Die von Memcached im Speicher vorgehaltenen Daten können künftig über Neustarts hinweg erhalten bleiben. Bild: Christiaan Colen, flickr.com / CC-BY-SA 2.0

Die Entwickler des Cache-Servers Memcached haben Version 1.5.18 ihrer Software veröffentlicht(öffnet im neuen Fenster) . Mit Hilfe von Memcached lassen sich bestimmte Inhalte dauerhaft im Arbeitsspeicher vorhalten, um den Zugriff darauf zu beschleunigen. Mit der nun verfügbaren Version können diese Inhalte auch über Neustarts der Anwendung hinweg erhalten werden.

Genutzt wird dafür die Funktion DAX(öffnet im neuen Fenster) (Direct Access), die mit Linux 4.0 eingeführt worden ist. Sie sorgt beim Einsatz von persistentem Speicher dafür, Daten direkt auszulesen und nicht über den Page Cache zu schicken. Nun kommt DAX bei Memcached zum Einsatz, damit der Cache auch Neustarts des Systems überlebt.

Das geschieht den Release Notes zufolge allerdings nicht automatisch, stattdessen müssen Admins dies konfigurieren, indem die Zeile "-e /tmpfs_mount/memory_file" als Startoption hinzugefügt wird. Bei Tmpfs_mount muss es sich um eine Ramdisk handeln, die größer sein sollte als das über den Parameter -m gesetzte Speicherlimit für Memcached.

Memcached verschiebt für die Neuerung nur Item-Daten in ein externes Mmap-File. Hashtabellen und Verbindungsdaten bleiben im üblichen Arbeitsspeicher. Nach dem Neustart liest der Daemon das File wieder ein, stellt interne Pointer wieder her und regeneriert die Hashtabellen. Das dauert, je nach Größe des Cache, ein paar Sekunden bis zu ein paar Minuten.

Fehlstart möglich

Um den Cache-Server neu zu starten, kann das Signal SIGUSR1 an den Daemon gesendet werden, woraufhin Memcached eine Datei namens /tmpfs_mount/memory_file.meta anlegt. Nach dem Neustart liest Memcached diese Datei wieder ein und fährt mit seiner Arbeit fort. Ist die erzeugte Datei nicht kompatibel oder beschädigt, schlägt der Prozess allerdings fehl und Memcached startet mit einem leeren Cache.

Die neue Funktion sei noch experimentell, schreiben die Entwickler und hoffen deshalb auf Feedback von Nutzern. Und um die Technik überhaupt verwenden zu können, müssen einige Voraussetzungen beachtet werden. So muss die Systemuhr richtig eingestellt sein und darf nicht springen, während Memcached heruntergefahren ist. Außerdem sind bestimmte Kommandos beim Neustart nicht verfügbar.


Relevante Themen