Uitgave van Memcached 1.6.0 met ondersteuning voor externe opslag ingeschakeld

vond plaats belangrijke release van het in-memory data caching-systeem In geheugen opgeslagen 1.6.0, dat werkt op gegevens in sleutel/waarde-indeling en gemakkelijk te gebruiken is. Memcached wordt meestal gebruikt als een lichtgewicht oplossing om het werk van sites met hoge belasting te versnellen door toegang tot het DBMS en tussentijdse gegevens in de cache op te slaan. Code geleverde onder BSD-licentie.

De nieuwe versie stabiliseert de implementatie van de opslag "extstore", die nu standaard is gebouwd (om uit te schakelen in het configuratiescript is de optie "-disable-extstore" aanwezig), maar expliciete activering vereist bij het opstarten (oude installaties blijven na de update zonder wijzigingen werken). Hoewel extstore over het algemeen als stabiel wordt beschouwd, is voorzichtigheid geboden bij de implementatie ervan op zeer grote systemen.

Met Extstore kunt u SSD/Flash-drives gebruiken om de cachegrootte uit te breiden. Net als bij RAM is Flash-opslag niet permanent en wordt deze gereset bij opnieuw opstarten. De reikwijdte van de nieuwe modus is het garanderen van een efficiënte caching van grote gegevens. Bij gebruik van "extstore" worden sleutels en metagegevens, zoals voorheen, alleen in RAM opgeslagen, maar grote gegevens die aan sleutels zijn gekoppeld, waarvan de grootte een ingestelde drempel overschrijdt, worden opgeslagen in externe opslag en alleen de aanwijzer blijft in RAM.

Als de sleutel is gekoppeld aan kleine gegevens, werkt Memcached zoals gewoonlijk, houdt de gegevens in het geheugen en heeft geen toegang tot externe opslag. Als er veel vrij geheugen is, kunnen de meest benodigde gegevens bovendien volledig in de cache in RAM worden geplaatst (u kunt bijvoorbeeld opgeven dat alleen objecten groter dan 1024 bytes die gedurende 3600 seconden niet zijn geopend, worden gereset naar Flash ).

De implementatie is geoptimaliseerd om maximale prestaties en minimale CPU-belasting te garanderen, wat ten koste gaat van de opslagefficiëntie (hoge mate van fragmentatie). Om de levensduur van Flash-drives te verlengen, worden gegevens opeenvolgend gebufferd en naar de opslag gespoeld. Om de cachestatus tussen herstarts op te slaan, kunt u de mogelijkheid gebruiken die in release 1.5.18 verscheen om een ​​cachedump naar een bestand te dumpen. Bij de volgende keer opstarten kunt u de cache uit dit bestand herstellen om pieken in de belasting van inhoudsprocessors te elimineren als gevolg van het leeg zijn van de cache (de cache wordt onmiddellijk "warm").

De tweede belangrijke verandering in Memcached 1.6 was de herwerking van de netwerkcommunicatiecode, die is aangepast om batchverzoeken binnen één systeemoproep automatisch te verwerken. Voorheen, bij het verzenden van meerdere GET-opdrachten in een enkel TCP-pakket, zou memcached de resultaten verzenden met afzonderlijke systeemaanroepen. In Memcached 1.6 worden de antwoorden samengevoegd en geretourneerd door een enkele systeemoproep te verzenden. Als gevolg hiervan zijn er nu gemiddeld 1.5 sleutels per systeemoproep, wat in tests een vermindering van de CPU-belasting met maximaal 25% en een vermindering van de latentie met enkele procenten aantoont.

Het herontwerp van het netwerksubsysteem maakte het ook mogelijk om indien nodig over te gaan tot dynamische toewijzing van buffers, in plaats van het statisch toewijzen van buffers. Deze optimalisatie verminderde het geheugengebruik tijdens het wachten op nieuwe opdrachten via een door de klant tot stand gebrachte verbinding van 4.5 KB naar 400-500 bytes, en maakte het ook mogelijk om veel oproepen naar malloc, realloc en free te elimineren, wat leidde tot onnodige geheugenfragmentatie op systemen met een groot aantal aansluitingen. Elke werkthread verwerkt nu zijn eigen pool van lees- en schrijfbuffers voor actieve clientverbindingen. Om de grootte van deze buffers aan te passen
de opties “-o resp_obj_mem_limit=N” en “-o read_buf_mem_limt=N” zijn aanwezig.

Tak 1.6 kondigde ook de afschaffing aan van binair protocol interactie met de server. Het onderhoud van het binaire protocol en het oplossen van problemen zullen doorgaan, maar nieuwe functies en updates van bestaande functies zullen niet worden geporteerd. Tekstprotocol zal zich zonder veranderingen blijven ontwikkelen. Het binaire protocol is vervangen door een nieuw protocol meta (een tekstversie van het protocol met compacte metaopdrachten), die de optimale combinatie van prestaties en betrouwbaarheid aantoont. Het nieuwe protocol omvat alle bewerkingen die voorheen beschikbaar waren via tekst- en binaire protocollen.

Bron: opennet.ru

Voeg een reactie