Memcached 1.6.0 کی ریلیز بیرونی سٹوریج کی حمایت کے ساتھ فعال ہے۔

واقعہ پیش آیا значительный релиз системы кэширования данных в оперативной памяти Memcached 1.6.0، جو ڈیٹا پر کلیدی/قدر کی شکل میں کام کرتا ہے اور استعمال میں آسان ہے۔ Memcached کو عام طور پر DBMS اور انٹرمیڈیٹ ڈیٹا تک رسائی کیشنگ کے ذریعے زیادہ بوجھ والی سائٹس کو تیز کرنے کے لیے ہلکے وزن کے حل کے طور پر استعمال کیا جاتا ہے۔ کوڈ فراہم کی 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_limt=N».

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

ماخذ: opennet.ru

نیا تبصرہ شامل کریں