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