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

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

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

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

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

Реализацията е оптимизирана за осигуряване на максимална производителност и минимално натоварване на 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_limit=N“.

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

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

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