bedeutendes Release des Systems zur Daten-Caching im Arbeitsspeicher , das mit Daten im SchlĂŒssel/Wert-Format arbeitet und sich durch Benutzerfreundlichkeit auszeichnet. Memcached wird normalerweise als leichtgewichtige Lösung verwendet, um die Leistung von stark frequentierten Websites durch das Caching des Zugriffs auf Datenbanken und Zwischenspeicher zu beschleunigen. Code unter der BSD-Lizenz stehen.
In der neuen Version wurde die Implementierung des Speichers ââ stabilisiert, der jetzt standardmĂ€Ăig kompiliert wird (um dies im Configure-Skript zu deaktivieren, gibt es die Option ââdisable-extstoreâ), jedoch eine explizite Aktivierung beim Start erfordert (Ă€ltere Installationen funktionieren nach dem Update weiterhin unverĂ€ndert). Obwohl der Speicher âextstoreâ insgesamt als stabil anerkannt ist, wird empfohlen, bei der Implementierung in sehr groĂen Systemen Vorsicht walten zu lassen.
Extstore ermöglicht die Nutzung von SSD/Flash-Speichern zur Erweiterung der Cache-GröĂe. Wie bei der Verwendung von RAM ist der Speicher auf Flash nicht dauerhaft und wird beim Neustart zurĂŒckgesetzt. Der neue Modus wird verwendet, um eine effiziente Zwischenspeicherung groĂer Datenmengen zu gewĂ€hrleisten. Bei Verwendung von âextstoreâ werden SchlĂŒssel und Metadaten, wie zuvor, nur im RAM gespeichert, aber die mit den SchlĂŒsseln verknĂŒpften groĂen Daten, die den festgelegten Schwellenwert ĂŒberschreiten, werden im externen Speicher gespeichert, wĂ€hrend im RAM nur ein Zeiger bleibt.
Wenn mit dem SchlĂŒssel kleine Daten verbunden sind, funktioniert Memcached wie gewohnt, hĂ€lt die Daten im Speicher und greift nicht auf den externen Speicher zu. Wenn viel freier Speicher vorhanden ist, können die am hĂ€ufigsten nachgeforderten Daten zusĂ€tzlich vollstĂ€ndig im Cache im RAM liegen (zum Beispiel kann angegeben werden, dass nur Objekte ĂŒber 1024 Byte auf Flash zurĂŒckgesetzt werden, auf die in 3600 Sekunden nicht zugegriffen wurde).
Die Implementierung ist optimiert, um maximale Leistung und minimale CPU-Last zu gewĂ€hrleisten, auf Kosten der Speichereffizienz (hohes Fragmentierungsniveau). Um die Lebensdauer von Flash-Speichermedien zu verlĂ€ngern, werden die Daten gepuffert und sequenziell im Speicher zurĂŒckgesetzt. Zum Erhalt des Cache-Zustands zwischen Neustarts kann die in der Version 1.5.18 eingefĂŒhrte Möglichkeit verwendet werden, einen Dump mit dem Cache in eine Datei zu speichern. Beim nĂ€chsten Start kann der Cache aus dieser Datei wiederhergestellt werden, um Spitzenlasten bei den Content-Handlern aufgrund eines leeren Caches zu vermeiden (der Cache wird sofort âwarmâ).
Die zweite wichtige Ănderung in Memcached 1.6 war die Ăberarbeitung des Codes fĂŒr die Netzwerkinteraktion, der fĂŒr die automatische Verarbeitung von Batch-Anfragen innerhalb eines Systemaufrufs angepasst wurde. Zuvor sendete Memcached bei der Ăbertragung mehrerer âGETâ-Befehle in einem TCP-Paket die Ergebnisse durch AusfĂŒhrung separater Systemaufrufe. In Memcached 1.6 werden die Antworten aggregiert und mit einem einzigen Systemaufruf zurĂŒckgegeben. Das Ergebnis ist, dass nun durchschnittlich 1,5 SchlĂŒssel pro Systemaufruf erforderlich sind, was in Tests eine Verringerung der CPU-Belastung um bis zu 25 % und eine Reduzierung der Latenz um einige Prozente zeigt.
Die Ăberarbeitung der Netzwerksubsysteme ermöglichte auch eine dynamische Zuweisung von Puffern nach Bedarf, anstelle einer statischen Zuordnung von Puffern. Diese Optimierung reduzierte den Speicherverbrauch im Leerlauf auf neue Befehle ĂŒber eine vom Client etablierte Verbindung von 4,5 KB auf 400-500 Byte und beseitigte viele Aufrufe von malloc, realloc und free, die zu unnötiger Speicherfragmentierung in Systemen mit vielen Verbindungen fĂŒhrten. Jeder Arbeits-Thread verarbeitet jetzt seinen eigenen Pufferpool zum Lesen und Schreiben fĂŒr aktive Clientverbindungen. Zur Anpassung der GröĂe dieser Puffer
Es sind die Optionen â-o resp_obj_mem_limit=Nâ und â-o read_buf_mem_limt=Nâ vorgesehen.
In der Version 1.6 wurde ebenfalls bekannt gegeben, dass der binĂ€re Protokoll Das Textprotokoll meta (textbasierte Version des Protokolls mit kompakten Meta-Befehlen), die eine optimale Kombination aus Leistung und ZuverlĂ€ssigkeit demonstriert. Das neue Protokoll umfasst alle Operationen, die zuvor ĂŒber die text- und binĂ€ren Protokolle verfĂŒgbar waren.
Quelle: opennet.ru
