Redis + Boost

Главные вкладки

Аватар пользователя SALAT-PRODUCTION SALAT-PRODUCTION 10 марта 2016 в 10:19

Не могу разобраться с следующим положением дел.
На данный момент работает boost. С недавних пор установил, настроил редис. Работает через расширение PHPRedis. Кеш заполняется и вроде как успешно извлекается.
Но вот в чем суть, производительности это не прибавило. Нагрузка на mysql только возросла, памяти забито на 100мб больше, скорость загрузки страницы не изменилась.
При нагрузочном тестировании остаются все те же ошибки что и при использовании буста. Такое чувство, что редис не участвует в процесс никаким образом.
Что не так?
Кластер на серваке достаточно мощный (4ядра, 4 гига).

Главная с редиской: Page execution time was 831.5 ms. Memory used at: devel_boot()=1.88 MB, devel_shutdown()=29.38 MB, PHP peak=36.25 MB.
Без редиски: Page execution time was 786.16 ms. Memory used at: devel_boot()=1.85 MB, devel_shutdown()=28.18 MB, PHP peak=29 MB.

Кеши соответственно чистил перед сравнением.

ВложениеРазмер
Иконка изображения 1457594534598.png15.51 КБ

Комментарии

Аватар пользователя bsyomov bsyomov 10 марта 2016 в 16:55

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

Собственно главный вопрос, на который стоит ответить - что вы хотите кешировать в redis? Для каких пользователей? Почему как бекэнд этого кеша выбран именно redis(например, тот же memcached в целом быстрее и проще)?

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

Аватар пользователя dashiwa dashiwa 10 марта 2016 в 22:45

Как можно совместить статику и динамику?

Например - число 1 , которое отдается хтмл-м пользователю

И например рандомное число,которое при каждом обращении меняется

Аватар пользователя bsyomov bsyomov 11 марта 2016 в 14:34

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

Аватар пользователя ttenz ttenz 12 марта 2016 в 17:31

редиску ещё настраивать нужно. у меня такой конфиг (буста нету):

 // Checking if Redis is running, only locally.
    // For remote servers comment the if() statement.
    if (file_exists('/var/run/redis/redis-server.pid')) {
    $redis_up = TRUE;
    }
    if (file_exists('sites/all/modules/contrib/entitycache/entitycache.info')) {
    $entity_cache = TRUE;
    }

    if (!empty($redis_up)) {

    // Required configurations.
    $conf['lock_inc'] = 'sites/all/modules/redis/redis.lock.inc';
    $conf['cache_backends'][] = 'sites/all/modules/redis/redis.autoload.inc';
    $conf['redis_client_interface'] = 'PhpRedis';
    $conf['redis_client_base'] = 1;
    $conf['redis_client_host'] = '127.0.0.1';
    $conf['redis_client_port'] = '6379';
    // Uncomment this line if Redis is locally running via socket.
    // $conf['redis_cache_socket'] = '/var/run/redis/redis.sock';
    // $conf['cache_prefix'] = 'mysite_';

    // Optional not redis specific.
    // $conf['cache_lifetime'] = 0;
    // $conf['page_cache_max_age'] = 0;
    // $conf['page_cache_maximum_age'] = 0;
    $conf['page_cache_invoke_hooks'] = TRUE;
    $conf['page_cache_without_database'] = FALSE;
    // $conf['redis_client_password'] = 'isfoobared';

    // Cache bins.
    $conf['cache_default_class'] = 'Redis_Cache';
    $conf['cache_class_cache_bootstrap'] = 'Redis_Cache';
    $conf['cache_class_cache'] = 'Redis_Cache';
    $conf['cache_class_cache_menu'] = 'Redis_Cache';
    $conf['cache_class_cache_block'] = 'Redis_Cache';
    $conf['cache_class_cache_views'] = 'Redis_Cache';
    $conf['cache_class_cache_views_data'] = 'Redis_Cache';
    $conf['cache_field'] = 'Redis_Cache';
    $conf['cache_class_cache_field'] = 'Redis_Cache';
    $conf['cache_class_cache_image'] = 'Redis_Cache';
    $conf['cache_class_cache_libraries'] = 'Redis_Cache';
    $conf['cache_class_cache_metatag'] = 'Redis_Cache';
    $conf['cache_class_cache_search_api_solr'] = 'Redis_Cache';

    // Always Database Cache.
    $conf['cache_class_cache_form'] = 'DrupalDatabaseCache';
// Entity Cache.
    if (!empty($entity_cache)) {
    $conf['cache_entity_node'] = 'Redis_Cache';
    $conf['cache_entity_fieldable_panels_pane'] = 'Redis_Cache';
    $conf['cache_entity_file'] = 'Redis_Cache';
    $conf['cache_entity_taxonomy_term'] = 'Redis_Cache';
    $conf['cache_entity_taxonomy_vocabulary'] = 'Redis_Cache';
    }