2008-08-07 4 views
4

Почему существует ограничение на жесткую кодировку (.5 meg after compression) в memcached? Кто-нибудь перекомпилировал их? Я знаю, что я не должен посылать такие большие куски, но эти лишние куски случаются для меня время от времени и наносят ущерб.Ограничение на Memcached chunk

ответ

4

Этот вопрос имел обыкновение быть в official FAQ

What are some limits in memcached I might hit? (Wayback Machine)

Цитирую:

Простые ограничения вы, вероятно, увидеть с кэше являются ключом и ограничения на размер элемента. Ключи ограничены до 250 символов. Сохраненные данные не может превышать 1 мегабайта в размере, так как это самый большой типичный размер горбыль «

Справку теперь был пересмотрен и в настоящее время существует два отдельных вопроса, покрывающие это:.

What is the maxiumum key length? (250 bytes)

Максимальный размер ключа - 250 символов. Обратите внимание, что это значение будет меньше, если вы используете клиентские «префиксы» или аналогичные функции, поскольку префикс прикреплен к передней части ori основной ключ. Более короткие клавиши - это , как правило, лучше, поскольку они экономят память и используют меньшую пропускную способность.

Why are items limited to 1 megabyte in size?

Ааа, это популярный вопрос!

Краткий ответ: из-за того, как работает алгоритм распределения памяти.

Долгий ответ: механизм хранения памяти Memcached (который будет подключаемый/скорректированный в будущем ...), использует подход с перекрытиями к памяти . Память разбивается на куски плит разного размера, , начиная с минимального количества и возрастая на факториал до максимально возможное значение.

Say минимальное значение равно 400 байт, а максимальное значение равно 1 мегабайта, а факториал составляет 1,20:

плиты 1 - 400 байт плиты 2 - 480 байт плиты 3 - 576 байт ... и т.д. .

Чем больше плита, тем больше щели между ней и предыдущей плиты. Таким образом, чем больше максимальное значение, тем менее эффективным является память памяти . Memcached также должен предварительно выделить некоторую память для каждой имеющейся плиты, поэтому установка меньшего факториала с большим максимальным значением потребует еще больших накладных расходов.

Есть и другие причины, по которым вы не хотели бы этого делать ... Если мы говорим о веб-странице , и вы пытаетесь сохранить/загрузить значения , что вы, вероятно, будете делать что-то не так.При таком размере займет заметное количество времени, чтобы загрузить и распаковать структуру данных в память, и ваш сайт, скорее всего, не будет работать очень хорошо.

Если вы действительно хотите, чтобы хранить вещи больше, чем 1 Мбайт, вы можете перекомпилировать Memcached с отредактированной slabs.c:POWER_BLOCK значение, или использовать неэффективное таНос/свободный бэкэнд. Другие предложения включают базу данных , MogileFS и т. Д.

 Смежные вопросы

  • Нет связанных вопросов^_^