Не могу разобраться с следующим положением дел.
На данный момент работает 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.
Кеши соответственно чистил перед сравнением.
Вложение | Размер |
---|---|
![]() | 15.51 КБ |
Комментарии
Вероятно, чтобы получить увеличение производительности, надо понимать, что и для каких целей устанавливается, и какой эффект должен быть, а не просто устанавливать побольше модных модулей.
Собственно главный вопрос, на который стоит ответить - что вы хотите кешировать в redis? Для каких пользователей? Почему как бекэнд этого кеша выбран именно redis(например, тот же memcached в целом быстрее и проще)?
Boost это статическое кеширование на уровне страниц для не зарегистрированных пользователей. Если у вас есть свободная память в некотором количестве, и основное количество пользователей гости, то это самый эффективный механизм кеширования - вы фактически отдаёт статику, а если есть память свободная, ещё и не задействуя диск - файлы кеша boost лежат в памяти (кеше файловой системы).
Ни одно решение требующее бутстрапа Drupal его не обгонит.
Как можно совместить статику и динамику?
Например - число 1 , которое отдается хтмл-м пользователю
И например рандомное число,которое при каждом обращении меняется
Вообще говоря можно - подгружая блоки с помощью ajax, например. При этом вся страница может быть статической, и быть закеширована целиком, а часть контента может быть динамикой.
редиску ещё настраивать нужно. у меня такой конфиг (буста нету):
// 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';
}
ajaxblocks