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

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

В новата версия е стабилизирана реализацията на хранилището «extstore«, което сега се компилира по подразбиране (за деактивиране в скрипта configure е предвидена опцията «—disable-extstore»), но изисква явно активиране при стартиране (стари инсталации след обновлението ще продължат да работят без промяна). Въпреки че като цяло хранилището «extstore» е признато за стабилно, се препоръчва внимание при внедряването му в много големи системи.

Extstore позволява използване на SSD/Flash устройства за увеличаване на размера на кеша. Както при използването на оперативната памет, хранилището на Flash не е постоянно и се изтрива при рестартиране. Като приложение на новия режим се посочва осигуряването на ефективно кеширане на данни с голям размер. При използването на «extstore», ключовете и метаданните, както и преди, се съхраняват само в оперативната памет, но свързаните с ключовете големи данни, които надвишават зададения праг, се съхраняват във външно хранилище, а в ОЗУ остава само указателят.

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

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

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

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

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

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

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster