БлогПеренос кэшированых данных в оперативную память. Memcache Storage.

Memcache Storage

Не так давно я писал про изменение места хранения кэша. В этой статье основной пример основывался на использовании модуля Memcache, который позволяет перенести хранимый кэш из базы данных в оперативную память. На момент написания статьи я достаточно давно и активно им пользовался, и в целом, был доволен результатом. Однако было три основных и достаточно неприятных момента, с которыми я постоянно сталкивался:

Инвалидация кэша

Основная проблема кроется в плохой обработке временного кэша. При хранении в базе данных такие данные помечались флагом -1 (CACHE_TEMPORARY) и обрабатываются обычными sql запросами. Однако мемкэш не предполагает сохранения кэша с отрицательным ключём. Он умеет хранить данные либо вечно (пока оперативная память не будет очищена, или данные не будут удалены явным образом), либо какое-то определённое время. Данные с временным сроком истечения кэша приходилось обрабатывать отдельно, и модуль Memcache справлялся с этим не самым лучшим образом.

В основном это проявлялось в работе с кэшем страниц (кэш для анонимов). В Друпале для всех кэшированных страниц выставляются временные ключи хранения. И постоянно возникала ситуация, когда анонимам отдавалась страница с давно истёкшим сроком годности. Т.е. по факту страница могла иметь пару десятков комментариев, а аноним их банально не видел.

Безусловно, это касается не только кэша страниц, но и всего временного кэша, однако на примере кэша страниц это было заметно наиболее болезнено.

Очистка кэша

У модуля Memcache имеется проблема с очисткой кэша: не всегда сброс кэша через интерфейс Друпала инвалидировал все хранимые в мемкэше данные. Не редко это приходилось решать изменением параметра $conf['memcache_key_prefix'] в settings.php: при изменении параметра, входящего в состав ключа кэша, данные запрашиваются с другим ключём. Соответственно, данные с новым ключём не находились и вынуждены были создаваться новые. Таким образом визуально достигалась очистка кэша, хотя по факту это было лишь изменение ключей, по которым забирался кэш.

Скорость работы

Этот пункт я не случайно указал последним в списке неприятных моментов. Сам по себе факт того, что кэш выносится из базы данных, уже плюс - он разгружает базу данных, позволяя ей свободнее обрабатывать другие запросы. Именно поэтому скорость не всегда является главной целью использования мемкэша (или любых других хранилищ кэша).

Пользуясь мемкэшем вы должны понимать - нет другого места, откуда вы могли бы получать данные быстрее, чем из оперативной памяти. В связи с этим мне было достаточно интересно на нагруженном проекте сравнить скорость получения кэша из базы данных и из мемкэша. Я уже не назову точных цифр, но результат меня не очень удовлетворил - по факту я получал кэш из оперативной памяти лишь на 5-10% быстрее, чем из базы данных. И это при том, что эти цифры должны отличаться гораздо существеннее.

Заканчивая вступление

Поковыряв код модуля Memcache я понял, что патчами его залатать будет сложно. Достаточно трудно объяснить разработчикам, которые пилили модуль 5 лет, что надо принять патч, который практически полностью перечеркнёт их работу. К тому же многие программисты устоявшиеся консерваторы, и не сильно жалуют масштабные изменения. В итоге разница во времени, некоторый языковой барьер и постоянная занятость разработчиков могли бы затянуть это дело на многие месяцы. А зачем откладывать проблему в долгий ящик, если её можно решить уже сегодня?

В итоге я внимательно изучил архитектурный подход модуля Memcache, почитал best practices и подсмотрел небольшие финты ушами в работе с мемкэшем, и создал своё решение. На данный момент оно решает две первые описанные мной проблемы, а так же улучшает ситуацию с третьей. Итак, барабанная дробь...

Memcache Storage

Описание моего модуля я решил выстроить в сравнении с его прямым и единственным конкуретном - модулем Memcache. Итак, чем же моё решение лучше?

Во-первых, на данный момент он используется на нескольких крупных проектах, и ещё не было выявлено ни одной проблемы с некорректной инвалидацией кэша. В конце концов, это была основная причина написания своего решения, и я уж постарался :)

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

memcache_storage_settings.png

В-третьих, он элементарно быстрее. Я накидал небольшой тест, который вызывает функции добавления, получения и удаления кэша. После этого по очереди подключал модули Memcache и Memcache Storage, и запускал тест для каждого из модулей. Вот результаты теста, которые я получил:

memcache_storage_test_results.png

Нетрудно заметить, что выигрыш в производительности примерно в 1,5 раза.

Кстати, вдумайтесь в результаты теста - Десять. Тысяч. Получений. Данных. Меньше. Секунды. Для более понятного сравнения поясню - средний сайт на Друпале при загрузке страницы едва ли делает более 80 запросов для получения кэша. Это в 125 раз меньше запросов, чем в тесте. Т.е. менее 8 милисекунд на получение всего кэша для страницы. Согласитесь, результаты внушают оптимизм.

Для особо любопытных привожу ниже код, которым я замерял результаты. Здесь обращаю внимание на то, что в тесте я постарался максимально приблизиться к реальной работе сайта, и поочерёдно обращаться к разным сегментам кэша:

$bins = array('cache', 'cache_path', 'cache_filter', 'cache_bootstrap', 'cache_page');
$data = array_fill(0, 100, rand());
 
timer_start('cache_set');
for ($i = 0; $i < 2000; $i++) {
  foreach ($bins as $bin) {
    cache_set($bin . '_' . $i, $data, $bin);
  }
}
print '10 000 sets: ' . timer_read('cache_set') . ' ms<br>';
 
timer_start('cache_get');
for ($i = 0; $i < 2000; $i++) {
  foreach ($bins as $bin) {
    cache_get($bin . '_' . $i, $bin);
  }
}
print '10 000 gets: ' . timer_read('cache_get') . ' ms<br>';
 
timer_start('cache_clear_all');
for ($i = 0; $i < 2000; $i++) {
  foreach ($bins as $bin) {
    cache_clear_all($bin . '_' . $i, $bin);
  }
}
print '10 000 deletes: ' . timer_read('cache_clear_all') . ' ms<br>';

Четвёртая причина использовать мой модуль - он имеет более проработаный режим отладки. За меня всё скажет скриншот:

memcache_storage_debug.png

Пятая причина - модуль лучше проработан в мелочах. Я сейчас не соберу всё по пунктам, но все @todo заметки в коде модуля Memcache были воплощены в жизнь.

Промежуточный итог

Я думаю, пяти весомых пунктов должно хватить, чтобы при прочих равных сделать шаг в сторону очевидного выигрыша в производительности, стабильности и удобстве работы.

Настройка модуля

Полный мануал по настройке модуля можно найти в README.txt модуля. Я подробно расписывать их не буду, остановлюсь лишь на основных моментах.

Все настройки конфигураций производятся только через settings.php. Вот минимальный код, который надо добавить в этот файл, чтобы перенести хранение кэша в оперативную память:

$conf['cache_backends'][] = 'sites/all/modules/memcache_storage/memcache_storage.inc';
$conf['cache_default_class'] = 'MemcacheStorage';
$conf['cache_class_cache_form'] = 'DrupalDatabaseCache';

Режим отладки

Включается установкой настройки memcache_storage_debug в TRUE:

$conf['memcache_storage_debug'] = TRUE;

Префикс ключей

Строка, которая участвует в формировании каждого ключа, хранимого в мемкэше.

$conf['memcache_storage_key_prefix'] = 'some_key';

Сжатие данных на лету

$conf['memcache_storage_compress_data'] = 0;

Может принимать два значения: 0 или 2 (MEMCACHE_COMPRESSED). Для сжатия использует библиотеку zlib. По результатам тестов при выключенном сжатии работает быстрее (оно и понятно). Но для экономии памяти в некоторых случаях может быть оправдано.

Сжатие больших объёмов данных

Мемкэш может автоматически сжимать данные, размер которых превышает определённое значение. Советую поиграться с этими настройками и выбрать оптимальное для себя значение. По результатам тестов, правильно подобранный параметр может дать 5-20% выигрыша в производительности.

$conf['memcache_storage_compress_threshold'] = array(
  'threshold' => 20000,
  'min_savings' => 0.2,
);

Использование нескольких бэкэндов

Фича унаследована с модуля Memcache - возможность использования нескольких серверов для пула мемкэша. В одной переменной указывается хост и порт сервера, а так же его алиас. В другой - связь между сегментом кэша и алиасом сервера, на котором сегмент будет храниться:

$conf['memcache_servers'] => array(
  'host1:port1' => 'default',
  'host2:port2' => 'cluster_name2',
  'host3:port3' => 'cluster_name2',
);
 
$conf['memcache_bins'] = array(
  'cache'           => 'default',
  'cache_page'      => 'cluster_name2',
  'cache_bootstrap' => 'cluster_name2',
);

FAQ

Модуль Memcache также поддерживает интеграцию с pecl библиотекой memcached. Будет ли реализована эта фича и в Memcache Storage?

Принципиально нет. По результатам тестов библиотека memcached явно проигрывает библиотеке memcache в производительности. Даже разработчики модуля Memcache рекомендуют использование второй библиотеки вместо первой.

Модуль Memcache содержит ещё один модуль - Memcache Admin, который предоставляет общую статистику запросов к мемкэшу. Будет ли что-то подобное реализовано в Вашем модуле?

В этом нет необходимости. Для получения статистики можно использовать модуль Memcache Status.

Модуль Memcache поддерживает хранение сессий в мемкэше. Планируется ли реализовать этот функционал?

Вы меня обманываете, модуль Memcache не поддерживает вынос данных сессии в оперативную память. Он пытается это делать, и этот функционал не рекомандован разработчиками для запуска в продакшне.

Отвечая на вопрос о реализации этой фичи в моём модуле - да, планируется. Мне давно интересна тема выноса всего, чего можно, из базы данных.

Говоря о выносе части данных из базы - планируется ли выности что-то ещё, кроме сессий?

Да, я всерьёз подумываю о хранении сообщений из журнала (watchdog) в мемкэше.

Будет ли бэкпорт на Drupal 6?

Нет, для меня шестой Друпал умер чуть больше года назад.

Обратная связь

Пожалуйста, не забывайте оставлять своё мнение о работе модуля в комментариях или ишью проекта. Это помогает мне делать продукты более качественными для Вас.

Комментарии

Аватар пользователя drupby
drupby написал:

я получал кэш из оперативной памяти лишь на 5-10% быстрее, чем из оперативной памяти.

14.03.2013 06:06
Аватар пользователя Spleshka
Spleshka написал:

Благодарю, поправил.

14.03.2013 12:39
Аватар пользователя Вячеслав
Вячеслав написал:

Спасибо большое, на следующей конференции в Минске с меня торт за полезные статьи.

14.03.2013 10:01
Аватар пользователя dansamara
dansamara написал:

Женя, ты супер :)
Отличный модуль, спасибо!
Про сессии в памяти это мысль хорошая, но мне почему-то кажется, что лучше в память переносить сессии анонимов, а зарегенных - дублировать. Что думаешь?
Про "вынос всего, чего можно, из базы данных" - тут всё просто: mv /var/lib/mysql /tmpfs ;)

14.03.2013 15:43
Аватар пользователя Spleshka
Spleshka написал:

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

Про "вынос всего, чего можно, из базы данных" - не настолько всего :) Я этим делом ещё бы управлять хотел.

14.03.2013 17:04
Аватар пользователя Akinak
Akinak написал:

Простите за глупый вопрос. Должно ли быть на сервере подключено php-расширение memcache для работы этого модуля?

15.03.2013 08:36
Аватар пользователя Akinak
Akinak написал:

При включении модуля выдает
Fatal error: Class 'Memcache' not found in /var/www/user/data/www/somsite.ru/sites/all/modules/memcache_storage/memcache_storage.manager.inc on line 50

15.03.2013 08:57
Аватар пользователя Spleshka
Spleshka написал:

@Akinak, читайте README.txt:

==================
## REQUIREMENTS ##
==================
 
- PHP 5.1 or greater
- Availability of a memcached daemon: http://memcached.org/
- PECL memcache package: http://pecl.php.net/package/memcache (version 2.2.1 or greater).
15.03.2013 14:42
Аватар пользователя andypost
andypost написал:

Отличная статья, ремарки:
стоит вынести логику множественных flush в специализированный memcache::add() таким образом избавиться от

$_SESSION['cache_expiration']

и

'cache_flush_' . $this->bin

И критика memcached безосновательна - cas и множественные операции порой дают несравнимый эффект с последовательным memcache

15.03.2013 17:04
Аватар пользователя Spleshka
Spleshka написал:

@andypost,
У меня сессии в коде вообще не используются, ни для каких случаев.

По поводу memcached - Друпал не поддерживает апи, позволяющий интегрировать cas операции или множественные вставки в memcached. Поэтому даже если эта возможность и есть, в нашем случае она просто бесполезна.

16.03.2013 13:56
Аватар пользователя Astral
Astral написал:

Подскажите новичку, как же установить сам Memcache?

На виртуальном хостинге в cPanel в разделе смены версии PHP - было сменено с 5.3 на 5.4 и поставлена галочка для Memcache (видимо это должно было установить библиотеку на сервер), а затем был установлен и активирован ваш модуль. Однако если смотреть статус Drupal 7: Memcache server 127.0.0.1:11211 No connection.

По моему запросу к хостеру - хостер сообщил, что запустил команду из мануала для настройки порта: memcached -m 24 -p 11211 -d

Но ничего не изменилось...

Значит ли это что что-то было не установлено на сервер или просто не до конца настроено, и что нужно сделать чтобы настроить?

23.03.2013 04:15
Аватар пользователя Spleshka
Spleshka написал:

@Astral, покажите / напишите всё, что пишет Memcache Storage на странице статуса работы Drupal.

23.03.2013 12:25
Аватар пользователя Rail
Rail написал:

Я сегодня вечером сидел искал модули для кэширования данных, естественно, нашел страницы обоих модулей, почитал их описания, и решил воспользоваться именно с Memcache Storage, тогда еще не зная, что этот модуль вы создали. Потом совсем по другому вопросу открыл ваш сайт, и наткнулся на эту статью про Memcache Storage.

Модуль действительно качественный, спасибо вам.

24.03.2013 19:40
Аватар пользователя Гость
Гость написал:

На open-server не проверяли работу ?

При очистке кеша, в drush около 10 повторений сообщения:

is not loaded. memcache_storage.manager.inc:227
<a href="http://pecl.php.net/package/memcache">Memcache</a> extension    [error]

Чистая установка, главная:
http://yadi.sk/d/nOLDwxbS3_IBm

Служба memcached есть, тип запуска автоматический.

Пытался на acquia dev проделать также, но почему-то возникли проблемы со службой.

27.03.2013 10:11
Аватар пользователя Spleshka
Spleshka написал:

Проверял на open server. Я даже больше скажу - на нём изначально модуль разрабатывался. Полёт нормальный, проблем не выявлено.

28.03.2013 02:17
Аватар пользователя Гость
Гость написал:

Я наверное чего-то не понял.

Кроме модуля Memcache Storage на open-server что-то еще необходимо установить ?

28.03.2013 08:52
Аватар пользователя Spleshka
Spleshka написал:

Нет, на open-server всё работает из коробки. Просто подключите модуль и настройте settings.php.

04.04.2013 21:44
Аватар пользователя ice
ice написал:

Сообщение вижу только в логе drush

28.03.2013 09:40
Аватар пользователя Александр
Александр написал:

На многих сайтах периодически выскакиваю вот такие ошибки:

Notice: MemcachePool::set(): Server 127.0.0.1 (tcp 11211, udp 0) failed with: Network timeout (0) в функции MemcacheStorage->_memcache_set() (строка 281 в файле /var/www/nikolaev/data/www/site.ru/sites/all/modules/memcache_storage/memcache_storage.inc).

Подскажите как вылечить? А то сервер частенько падает :(
А в целом модуль очень хорош, сайты с ним работают чуток быстрее по сравнению с тем-же Memcache API and Integration

07.04.2013 11:56
Аватар пользователя Александр
Александр написал:

Похоже это довольно распространенная проблема Memcache - ссылка на тест
Автор поста утверждает что "Memcache" глючит с большим числом записей...

07.04.2013 13:02
Аватар пользователя Spleshka
Spleshka написал:

Александр, я с этой записью сталкивался только тогда, когда сервер был загружен под завязку и не успевал обрабатывать запросы. Хотя на одном проекте у нас 2 гб оперативки забито полностью мемкэшем и всё работает отлично. Не думаю, что косяк в мемкэше. Скорее, что-то с сервером.

07.04.2013 17:42
Аватар пользователя AmiGator
AmiGator написал:

у меня пару вопросов на засыпку ))
1. как скажется на производительности сайта с вашим модулем, если дополнительно будет включен eAccelerator?
2. что можете сказать о модуле Entity cache? стоит его использовать или нет?

16.04.2013 16:11
Аватар пользователя Spleshka
Spleshka написал:

@AmiGator,

1. Отлично скажется. Эти дополнения предназначены для разных вещей. Memcached используется для хранения пользовательских данных, а eAccelerator для хранения байткода. Единственное замечение - я предпочитаю использовать xCache вместо eAccelerator или APC. Он лучше справляется на больших нагрузках.

2. Такие модули называют "поставил и забыл". То есть он даёт незначительный прирост в производительности. Однако на двух проектах мне пришлось его удалить, т.к. он вызывал проблемы. В частности он плохо работает с i18n, не связывая между собой переводы и их источники. В общем, если с ним у вас проблем не возникает - ставьте и используйте. Если ловите необъяснимые баги - лучше от него отказаться.

16.04.2013 17:25
Аватар пользователя Astral
Astral написал:

Использую модуль, очень доволен. Нагрузка значительно уменьшилась, особенно при наплывах роботов и внесении изменений, контента на сайт. Случаи выхода сайта в оффлайн при добавлении новых материалов практически сошли на нет.

Хотел уточнить, раньше при использовании memcache с 64 мб памяти, промахов было около 26% (при просмотре статистики admin/reports/status/memcache), увеличил память до 128 мб для memcache, кол-во промахов уменьшилось до 8.4%... Нужно ли и дальше увеличивать объём (при лимите на виртуальном хостинге всей оперативной памяти в 1 гб). Или нужно идти другими путями для уменьшения промахов и увеличения попаданий, и какими?

p.s. Сейчас настройки settings.php:
$conf['memcache_servers'] = array('127.0.0.1:11211' => 'default');
$conf['cache_backends'][] = 'sites/all/modules/memcache_storage/memcache_storage.inc';
$conf['cache_backends'][] = 'sites/all/modules/authcache/authcache.inc';
$conf['cache_default_class'] = 'MemcacheStorage';
$conf['cache_class_cache_form'] = 'DrupalDatabaseCache';
$conf['cache_class_cache_update'] = 'DrupalDatabaseCache';
$conf['memcache_storage_page_cache_custom_expiration'] = TRUE;
$conf['memcache_storage_page_cache_expire'] = 0; // NEVER EXPIRE.
$conf['memcache_storage_debug'] = TRUE;
$conf['page_cache_without_database'] = TRUE;
$conf['page_cache_invoke_hooks'] = FALSE;

Кстати, при выводе таблицы debug, 3 столбец Used memory, KB видимо нужно заменить на Used memory, BYTES.

08.06.2013 04:43
Аватар пользователя Spleshka
Spleshka написал:

Рекомендую размер пула мемкэша не менее 256мб.

10.06.2013 11:00
Аватар пользователя kartvladek
kartvladek написал:

Скажите каким образом это сделать? Где надо прописать необходимые параметры? Сейчас под мемкеш по дефолту отвелось около 50М. Модуль установил, руководствуясь вашими рекомендациями.

29.08.2014 23:46
Аватар пользователя Astral
Astral написал:

Увеличение пула memcached с 128 мб до 384 мб уменьшило число промахов с 8.4% до 6.9% (90% памяти заняло в течение 2 дней, дальше не увеличивает, видимо 10% остаются в резерве свободной памяти).
Но при этом на 256 мб сократило свободную память, наверное выигрыш от увеличения не так очевиден в моём случае...

Кстати, на сколько корректна такая строчка в settings.php
$conf['cache_class_cache_update'] = 'DrupalDatabaseCache';
Чтобы не было проблем с обновлением модулей и переводов?

12.06.2013 03:29
Аватар пользователя Spleshka
Spleshka написал:

Вполне корректна и имеет место быть.

12.06.2013 16:16
Аватар пользователя Astral
Astral написал:

Когда запускаю демон memcache через ssh на хостинге, ввожу команду:
memcached -l 127.0.0.1 -d -c 8 -m 700

Я правильно понимаю что тем самым запускаю не Memcache, а Memcached, и чтобы запустить memcache нужно:
memcache -l 127.0.0.1 -d -c 8 -m 700

08.07.2013 03:54
Аватар пользователя ValiDoll
ValiDoll написал:

Обнаружил в одном проекте вот такую фишку. При включенной опции

$conf['cache_class_cache_form'] = 'DrupalDatabaseCache';

возникают проблемы с формами редактирования нод. В частности была проблема в том, что поля с файлами (image и пр.) при редактировании выводились без значений, хотя до этого туда были сохранены файлы, и при сохранении конечно же слетали.

29.07.2013 14:50
Аватар пользователя Calipso
Calipso написал:

>> Единственное замечение - я предпочитаю использовать xCache вместо eAccelerator или APC.
А xCache как подключен к Drupal? Модуля нет, вроде для него. Понятное дело, что xCache и так всё кэширует, но как сделать правильнее?

25.09.2013 13:45
Аватар пользователя Spleshka
Spleshka написал:

xcache никак не подключен к Друпалу. Он просто используется в качестве кэширующего инструмента для байткода. Среда разработки здесь вообще не при чём.

25.09.2013 20:18
Аватар пользователя Виктор
Виктор написал:

Можно ли модуль использовать с Drupal 6 ?

11.11.2013 21:43
Аватар пользователя Spleshka
Spleshka написал:

Нет, только с Drupal 7

13.11.2013 20:21
Аватар пользователя Владимир22
Владимир22 написал:

Здравствуйте. Как определить, работает ли мемкеш?
У меня выдает такое сообщение:

Memcache Storage class MemcacheStorage class is not loaded.
See README.txt and make sure that settings.php is configured properly.

ОК
Memcache Storage: PECL Memcache extension Version: 2.2.7
ОК
Memcache Storage: PECL Memcached extension Version: 2.1.0
ОК
Memcache Storage: extension used Memcache
ОК
Memcache Storage: server 127.0.0.1:11211 (default cluster) Connected

содержание файла settings.php
$conf['memcache_servers'] = array('127.0.0.1:11211' => 'default');
$conf['cache_backends'][] = 'sites/all/modules/memcache_storage/memcache_storage.inc';
$conf['cache_default_class'] = 'MemcacheStorage';
$conf['cache_class_cache_form'] = 'DrupalDatabaseCache';
$conf['cache_class_cache_update'] = 'DrupalDatabaseCache';
$conf['memcache_storage_page_cache_custom_expiration'] = TRUE;
$conf['memcache_storage_page_cache_expire'] = 0; // NEVER EXPIRE.
$conf['memcache_storage_debug'] = TRUE;
$conf['page_cache_without_database'] = TRUE;
$conf['page_cache_invoke_hooks'] = FALSE;

04.05.2014 22:39
Аватар пользователя Spleshka
Spleshka написал:

Убедитесь, что путь к файлу с memcache_storage.inc корректный. Если выдаёт сообщение, что класс не загружен - значит, путь к классу неверный.

05.05.2014 18:54
Аватар пользователя Гость
Гость написал:

Спасибо. Проблема была в том, что редактировал файл settings.php в директории default - в то время как реально использовался файл настроек в другой директории...

05.05.2014 20:24
Аватар пользователя dema501
dema501 написал:

Отказался от memcache в пользу redis после 4х лет использования. AWS поспособствовал.

16.05.2014 14:44
Аватар пользователя Nika
Nika написал:

Подскажите, отключать или оставлять настройку Drupal Кэшировать страницы для анонимных пользователей?

22.05.2014 22:40
Аватар пользователя Денис...
Денис... написал:

У меня memcache_status выдает такую ошибку - Cant connect to:mymemcache-server1:11211
В службах сервис memcached запущен, phpinfo тоже показывает, что все есть.
Кто сталкивался с таким?

12.08.2014 19:20
Аватар пользователя ALS-Studio
ALS-Studio написал:

Добрый день!

Столкнулись с интересной проблемой - при подключенном в settings.php memcache_storage во вьюсе пропадает часть полей в "критериях фильтрации"

Чтобы продемонстрировать - пара скриншотов:

Выключенный memcache_storage: https://yadi.sk/i/axWEd3j6ZcGmJ
Включенный memcache_storage: https://yadi.sk/i/Y5GlWTwoZcGio

Подскажите, в чем может быть причина такого поведения?

14.08.2014 14:36

Комментировать