Memcached версия 1.6.0 с включена поддръжка за външно съхранение

се състоя значително издание на системата за кеширане на данни в паметта Memcached 1.6.0, който работи с данни във формат ключ/стойност и е лесен за използване. Memcached обикновено се използва като леко решение за ускоряване на сайтове с голямо натоварване чрез кеширане на достъпа до СУБД и междинни данни. Код предоставени под лиценз BSD.

Новата версия стабилизира внедряването на хранилището "extstore", който вече е изграден по подразбиране (за деактивиране в скрипта за конфигуриране е предоставена опцията "-disable-extstore"), но изисква изрично активиране при стартиране (старите инсталации ще продължат да работят без промени след актуализацията). Въпреки че extstore обикновено се счита за стабилен, се препоръчва повишено внимание при внедряването му на много големи системи.

Extstore ви позволява да използвате SSD/флаш устройства за разширяване на размера на кеша. Както при RAM, флаш паметта не е постоянна и се нулира при рестартиране. Обхватът на новия режим е да осигури ефективно кеширане на големи данни. Когато използвате "extstore", ключовете и метаданните, както и преди, се съхраняват само в RAM, но големи данни, свързани с ключове, чийто размер надвишава зададен праг, се съхраняват във външно хранилище и само указателят остава в RAM.

Ако ключът е свързан с малки данни, тогава Memcached работи както обикновено, запазва данните в паметта и няма достъп до външна памет. Ако има много свободна памет, тогава най-необходимите данни могат допълнително да бъдат напълно разположени в кеша в RAM (например, можете да укажете, че само обекти, по-големи от 1024 байта, които не са били достъпни за 3600 секунди, се нулират към Flash ).

Внедряването е оптимизирано, за да осигури максимална производителност и минимално натоварване на процесора, за сметка на ефективността на съхранението (високо ниво на фрагментация). За да се удължи живота на флаш устройствата, данните се буферират и изхвърлят в хранилището последователно. За да запазите състоянието на кеша между рестартирането, можете да използвате възможността, която се появи във версия 1.5.18, за да изхвърлите дъмп на кеша във файл. При следващото стартиране можете да възстановите кеша от този файл, за да елиминирате пиковете в натоварването на процесорите за съдържание поради това, че кешът е празен (кешът веднага става „топъл“).

Втората важна промяна в Memcached 1.6 беше преработката на кода за мрежова комуникация, който е адаптиран да обработва автоматично пакетни заявки в рамките на едно системно повикване. Преди това, когато изпращаше множество GET команди в един TCP пакет, memcached изпращаше резултатите с отделни системни извиквания. В Memcached 1.6 отговорите се агрегират и връщат чрез изпращане на едно системно повикване. В резултат на това вече има средно 1.5 ключа на системно повикване, което при тестове демонстрира намаляване на натоварването на процесора с до 25% и намаляване на латентността с няколко процента.

Редизайнът на мрежовата подсистема също направи възможно преминаването към динамично разпределение на буфери, ако е необходимо, вместо статично присвояване на буфери. Тази оптимизация намали потреблението на памет при изчакване на нови команди чрез връзка, установена от клиента, от 4.5 KB до 400-500 байта и също направи възможно премахването на много извиквания на malloc, realloc и free, които водят до ненужно фрагментиране на паметта на системи с голям брой връзки. Всяка работна нишка вече обработва свой собствен пул от буфери за четене и запис за активни клиентски връзки. За да регулирате размера на тези буфери
предоставени са опциите „-o resp_obj_mem_limit=N“ и „-o read_buf_mem_limt=N“.

Клон 1.6 също обяви оттеглянето на двоичен протокол взаимодействие със сървъра. Поддръжката на двоичния протокол и корекциите на грешки ще продължат, но нови функции и актуализации на съществуващи функции няма да бъдат пренесени. Текстов протокол ще продължи да се развива без промени. Двоичният протокол е заменен с нов протокол мета (текстова версия на протокола с компактни мета-команди), демонстрираща оптималната комбинация от производителност и надеждност. Новият протокол обхваща всички операции, достъпни досега чрез текстови и двоични протоколи.

Източник: opennet.ru

Добавяне на нов коментар