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

Ускоряем XenForo: включаем кэширование

Тема в разделе "Советы, руководства и видео-уроки", создана пользователем FractalizeR, 12.10.2010.

Загрузка
  1. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Зависит от админа хостинга.
     
  2. GAM

    GAM Местный

    Регистрация:
    28.04.11
    Сообщения:
    326
    Симпатии:
    159
    Версия XF:
    1.1.3
    Вроде как нет =)
     
  3. Yoskaldyr

    Yoskaldyr Пользователь

    Регистрация:
    27.09.10
    Сообщения:
    1 921
    Симпатии:
    1 163
    Версия XF:
    1.0.4
    При условии что собственный мемкеш, а не общий для кучи клиентов.
     
    GAM нравится это.
  4. Lex

    Lex Dura Lex

    Регистрация:
    27.11.10
    Сообщения:
    820
    Симпатии:
    159
    Версия XF:
    1.5.1
    Какой способ кеширования из представленных предпочтительнее, надежнее и быстрее на VPS сервере: Memcached или APC? Или может какой другой?
     
  5. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Вообще-то есть кешеры опкода и кешеры переменных. Мемкеш кеширует только переменные. APC кеширует и опкод и переменные. Есть еще XCache, который также может кешировать и опкод и переменные. В первую очередь нужно кешировать опкод. Во вторую - переменные. При этом можно кешировать опкод APC или XCache, а переменные доверить мемкешу. Но тут нужно учитывать, работает ли кешер переменных только для Вашего сайта или для целой кучи сайтов пользователей на шареде. Если шаред, то лучше вообще не кешируйте переменные, так как есть вероятность того, что кто-либо из пользователей может перехватить закешированные данные Вашего сайта, что чревато деградацией безопасности вплоть до взлома. А вот кешировать опкод можно безбоязненно. Кстати, кеширование опкода часто хостерами шареда уже включено, так как позволяет легко увеличить количество пользователей такого хостера на 30%, что хостеру банально выгодно.
     
  6. Lex

    Lex Dura Lex

    Регистрация:
    27.11.10
    Сообщения:
    820
    Симпатии:
    159
    Версия XF:
    1.5.1
    Хорошо тогда вопрос другой APC или Xcache?
     
  7. Yoskaldyr

    Yoskaldyr Пользователь

    Регистрация:
    27.09.10
    Сообщения:
    1 921
    Симпатии:
    1 163
    Версия XF:
    1.0.4
    xcache немного быстрее, но все равно в конечный выбор от личных предпочтений и от того какая система стоит, т.к. иногда может быть странное поведение e xcache под большими нагрузками под одними системами, а у APC под другими (но для небольших нагрузок пофиг что использовать)
     
  8. Lex

    Lex Dura Lex

    Регистрация:
    27.11.10
    Сообщения:
    820
    Симпатии:
    159
    Версия XF:
    1.5.1
    Поддержка ратует больше за APC, чем за xcache. Сервер от fastvps.ru

    Вообщем первое сообщение данной темы актуально, я имею ввиду способ выставления кеша?
     
  9. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    При кешировании опкода никаких настроек ксена не требуется.
     
  10. Jigsaff

    Jigsaff Местный

    Регистрация:
    15.03.13
    Сообщения:
    44
    Симпатии:
    3
    Версия XF:
    1.3.0
    Сделал тестовый аккаунт на шареде fozzy.com (phpinfo), у них установлен apc. Форум чистый, свежеустановленный.

    Параметры без кеширования:
    Время: 0,0348 сек.
    Память: 3,325 МБ
    Запросов к БД: 11

    Параметры с кешированием:
    Время: 0,0382 сек. Память: 3,473 МБ Запросов к БД: 9
    Я понимаю, что на новом форуме кеширование-то в общем и не нужно. А что можно сказать в общем о цифрах — хостинг неплох?
     
  11. 1981

    1981 Местный

    Регистрация:
    15.10.11
    Сообщения:
    273
    Симпатии:
    19
    Версия XF:
    1.1.4
    Такое ксену подойдет, Varnish Accelerator:
     
  12. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Вообще-то страница всегда меняется. Если на странице что-то не изменилось, то это обычно не требует повторной генерации, а используется кеш. Т.е. кеширование ксена, как и большинства современных движков, происходит поблочно: при формировании страницы генерируется заново только то, что действительно изменилось, а остальное просто включается в страницу из кеша.
    Также статика (картинки, css, скрипты) отдаются без повторной генерации. Более того, некоторые браузеры и не запрашивают часть этих данных.

    ИМХО, Varnish будет в данном случае лишней прослойкой. Похоже он рассчитан на то, что разработчик сайта не будет делать свое кеширование.
     
    1981 нравится это.
  13. Edward

    Edward Местный

    Регистрация:
    19.11.12
    Сообщения:
    247
    Симпатии:
    43
    Версия XF:
    1.1.3
    Установил с репозитория Debian 6 xcache 1.3.0-7

    В конфиге xcache.ini вот что содержится:

    PHP:
    configuration for php Xcache module
     
    [xcache-common]
    ;; 
    install as zend extension (recommended), normally "$extension_dir/xcache.so"
    zend_extension = /usr/lib/php5/20090626/xcache.so
     
    [xcache.admin]
    xcache.admin.enable_auth On
    Configure this to use admin pages
    xcache.admin.user "mOo"
    xcache.admin.pass md5($your_password)
    xcache.admin.pass ""
     
    [xcache]
    ini only settingsall the values here is default unless explained
     
    select low level shm/allocator scheme implemenation
    xcache
    .shm_scheme =        "mmap"
    to disablexcache.size=0
    to enable xcache.size=64M etc (any size 0) and your system mmap allows
    xcache
    .size  =                16M
    set to cpu count (cat /proc/cpuinfo |grep -c processor)
    xcache.count =                1
    just a hash hintsyou can always store count(items) > slots
    xcache
    .slots =                8K
    ttl of the cache item0=forever
    xcache
    .ttl  =                0
    interval of gc scanning expired items0=no scanother values is in seconds
    xcache
    .gc_interval =          0
     
    same as aboves but for variable cache
    xcache
    .var_size  =            0M
    xcache
    .var_count =            1
    xcache
    .var_slots =            8K
    ; default ttl
    xcache
    .var_ttl  =            0
    xcache
    .var_maxttl  =          0
    xcache
    .var_gc_interval =    300
     
    xcache
    .test =                Off
    N/for /dev/zero
    xcache
    .readonly_protection Off
    ; for *nixxcache.mmap_path is a file pathnot directory.
    ; Use 
    something like "/tmp/xcache" if you want to turn on ReadonlyProtection
    2 group of php won't share the same /tmp/xcache
    ; for win32, xcache.mmap_path=anonymous map name, not file path
    xcache.mmap_path =    "/dev/zero"
     
     
    ; leave it blank(disabled) or "/tmp/phpcore/"
    ; make sure it'
    s writable by php (without checking open_basedir)
    xcache.coredump_directory =  ""
     
    per request settings
    xcache
    .cacher =              On
    xcache
    .stat  =              On
    xcache
    .optimizer =          Off
     
    [xcache.coverager]
    per request settings
    enable coverage data collecting for xcache.coveragedump_directory and xcache_coverager_start/stop/get/clean() functions (will hurt executing performance)
    xcache.coverager =          Off
     
    ini only settings
    make sure it's readable (care open_basedir) by coverage viewer script
    ; requires xcache.coverager=On
    xcache.coveragedump_directory = ""
    1. Данный конфиг надо изменять или можно так оставить? На VDS 2 форума работают.
    2. Непонятен еще один момент, после простой установки xcache на сервере, сам xcache считается включенным на сервере и выполняет уже свои функции?


    Для активации кэширования на форуме в config.php писал следующее:
    PHP:
    $config['cache'] = array(
    'enabled' => true,
    'frontend' => 'Core',
    'frontendOptions' => array(
    'caching' => true,
    'automatic_serialization' => false,
    'cache_id_prefix' => 'myforum_',
    'lifetime' => 18000
    ),
    'backend' => 'Xcache',
    'backendOptions' => array(),
    );
    После его применения на сайт не возможно зайти, пишет ошибку: An unexpected error occurred. Please try again later.

    Вот что говорит Журнал ошибок сервера XenForo:

    Такое ощущение что тут: 'cache_id_prefix' => 'myforum_',
    значение "myforum_" надо поменять на что то, на что понять не могу.
     
  14. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Измените xcache.var_size на что-то, отличное от 0. Это включит кеш переменных (сейчас оно выключено, о чем ксен и говорит). Сильно много там не нужно, подбирайте где-то от 8 Мб.
    Измените xcache.size на большее значение, так как маловероятно, что будет достаточно 16 Мб. Для того, чтобы убедиться, что хватает выделенного под кеширование опкода, нужно админку кешера установить.

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

    Edward Местный

    Регистрация:
    19.11.12
    Сообщения:
    247
    Симпатии:
    43
    Версия XF:
    1.1.3
    Спасибо за разъяснение, надо будет экспериментировать. (VDS от Hetzner Q7 - 1Ггц и 512мб) "В настройках каждого форума нужно указывать свой префикс cache_id_prefix" - данный префикс надо в админке ксенфоро указывать?
    мда, эксперименты с xcache отложатся на несколько дней наверное.
    ---
    После установки xcache и рестарта апача через консоль, заметил что не получается попасть на страницу IP/phpmyadmin/ (http://s019.radikal.ru/i603/1303/87/8647c9e1522f.png), никаких работ на сервере в этот день больше не делал, а утром заходило на страницу IP/phpmyadmin/.
    Интересно то, что около месяца назад такая же проблема появилась возможно когда ставил на сервер nginx. Тогда пришлось переустанавливать ОС и заново настраивать сервер. Сейчас уже не хочется заново сносить все и переставлять, так как настроено уже все. Что за напасть такая, как ни одно так другое. :cry:
    ---
     
  16. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Да. В конфиге ксена.
    Смотрите логи ошибок апача.
     
    Edward нравится это.
  17. Edward

    Edward Местный

    Регистрация:
    19.11.12
    Сообщения:
    247
    Симпатии:
    43
    Версия XF:
    1.1.3
    PHP:
    'automatic_serialization' => false
    Этот код что включает/выключает?

    Нормально выдает главная страница?
    Время: 0,0840 сек. Память: 6,349 МБ Запросов к БД: 12
    конфиг в ксенфоро:
    PHP:
    $config['cache'] = array(
    'enabled' => true,
    'frontend' => 'Core',
    'frontendOptions' => array(
    'caching' => true,
    'automatic_serialization' => false,
    'cache_id_prefix' => 'xf_',
    'lifetime' => 18000
    ),
    'backend' => 'Xcache',
    'backendOptions' => array(),
    );
    xcache.size = 16M
    xcache.var_size = 8M
    админку xcache не ставил, с этими значениями сильно не игрался, пробовал ставить xcache.size = 32M но на глаз изменений не заметил, оставил на 16M.
     
  18. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Админку XCache ставить все же советую. Причина в том, что кеш работать будет при любом раскладе, но вот насколько эффективно он будет работать, можно понять только через админку:
    xcache_adm.png
    Вот тут явно видно, что используются несколько потоков (это увеличивает производительность), при этом каждому потоку выделен достаточный объем памяти. Проблем с размещением в кеше нет (нули в столбце OOMs). Кеширование переменных у меня не включено (это не для ксена сервер был), поэтому на этот кеш внимание не обращаем.
    Также на графике отсутствует фрагментация, что положительно сказывается на помещении кода в кеш. Дело в том, что при достаточном объеме выделенной памяти (например, 16 Мб) при занятых 14 Мб вроде как останется 2 Мб, но для помещения туда даже 500 Кб скрипта может не хватить места, если свободное место фрагментировано. Т.е. в кеш помещается опкод только в случае незанятого цельного участка необходимого объема.

    По цифрам дебага - да, у Вас вполне нормальный результат.
     
    Edward нравится это.
  19. Edward

    Edward Местный

    Регистрация:
    19.11.12
    Сообщения:
    247
    Симпатии:
    43
    Версия XF:
    1.1.3
    Понятно.
    Данные в ксенфоро кэшируется только строкового типа?

    Чтобы включить админку что нужно тут прописать?
    ; xcache.admin.user = "mOo"
    ; xcache.admin.pass = md5($your_password)
    ; xcache.admin.pass = ""
     
  20. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Первую и последнюю строки. В последнюю вписывается пароль, полученный через md5. Ну а затем можно просто скопировать прилагающуюся папку со скриптом админки на сайт.
     

Поделиться этой страницей