Нашри Memcached 1.6.0 бо дастгирии нигаҳдории беруна фаъол аст

сурат гирифт значительный релиз системы кэширования данных в оперативной памяти Memcached 1.6.0, ки бо маълумот дар формати калид/арзиш кор мекунад ва истифодааш осон аст. Memcached одатан ҳамчун як ҳалли сабук барои суръат бахшидан ба сайтҳои серборӣ тавассути кэшкунии дастрасӣ ба DBMS ва маълумоти мобайнӣ истифода мешавад. Кодекс таъмин карда мешавад таҳти иҷозатномаи BSD.

В новой версии стабилизирована реализация хранилища «мағозаи берунӣ«, которое теперь собирается по умолчанию (для отключения в скрипте 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_limt=N».

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

Манбаъ: opennet.ru

Илова Эзоҳ