vBulletin, стороннее и собственное кеширование

12 3
Jackyk
На сайте с 05.10.2005
Offline
342
2773

Приветствую Уважаемое Сообщество.

Столкнулся с тем, что система кеширования Varnish не кеширует толком vBulletin (3.8.7), в результате хостинг с хваленым кешированием, который при нормальной его работе должен спокойно отдавать до 1000 статически-закешированных страниц в секунду, лег на стресстесте.

Комментарий хостера:

* * curl -I "http://site.ru"

* * Age: 0
* * Via: 1.1 varnish

"Age: 0" указывает на то, что Varnish не кэширует сайт. Форум даёт распоряжение не кэшировать страницу, и Varnish следует этим указаниям. Для того, чтобы разрешить кэширование, необходимо изменить заголовки "Expires:" и "Pragma:". Изменить заголовки обычно можно в настройках CMS.

Для Drupal мы рекомендуем использовать модуль Drupal Boost. Для Wordpress мы рекомендуем W3 total cache. Для Joomla вы можете использовать "Expires Headers" .

В случае с vBulletin, если нет возможности установить заголовки Expires, попробуйте добавить следующее в файл .htaccess:

ExpiresActive On
ExpiresByType text/html "access plus 1 minutes"

Однако если сайт отправляет браузеру cookies, то сохраняется вероятность, что Varnish кэшировать не будет.

Мы протестовали графику на сайте и убедились, что Varnish eё кэширует нормально. Об этом свидетельствует то, что Age: - больше нуля

В-общем, вопрос к знающим людям - можно нормально подружить vB и систему внешнего кеширования (хоть этот Varnish, хоть средствами nginx, как на других хостингах иногда делают)?

И ещё вопрос. У vBulletin, насколько я понимаю, есть ещё а)некие настройки кеширования в панели и б)целый абзац в config.php.


// ****** DATASTORE CACHE CONFIGURATION *****
// Here you can configure different methods for caching datastore items.
// vB_Datastore_Filecache - to use includes/datastore/datastore_cache.php
// vB_Datastore_APC - to use APC
// vB_Datastore_XCache - to use XCache
// vB_Datastore_Memcached - to use a Memcache server, more configuration below
// $config['Datastore']['class'] = 'vB_Datastore_Filecache';

Как оно работает на практике - эффективно? Можно ли это использовать в дополнение или вместо этого самого Varnish?

Суть задачи - отдавать статику вместо обращения к БД и движку каждый раз. Обновления контента не настолько часты, и для незарегистрированных читателей задержка на кеширование в минуту или даже больше никак отрицательно не скажется на юзабельности, но должно радикально снизить нагрузку на сервер.

С уважением, Евгений.

С уважением, Евгений.
Unlock
На сайте с 01.08.2004
Offline
785
#1

Хм, странно. У меня Вобла очень быстро грузится при одновременном количестве пользователей в районе 150-200 человек. Сижу на тарифе за 420 рублей в Зеноне. Общая посещаемость более 7000 в сутки, проблем нет.

Может все таки поискать проблему в хаках или еще где-то? Извини, что не по теме вопроса, просто удивило.

Кешировать форумы, имхо, не лучшее решение. Где-то сэкономишь времени, но где-то гемороя наберешься.

nginx сейчас почти у всех хостеров перед апач стоит.

P.S. В настройках Воблы, в разделе Cookies и заголовки HTTP есть Добавлять в HTTP заголовки "No-Cache". Что там выбрано?

Jackyk:
заголовки Expires

Это можно и самому добавить, в шаблоне скорее всего.

Есть желание, - тысяча способов; нет желания, - тысяча поводов! /Петр-I/.
Jackyk
На сайте с 05.10.2005
Offline
342
#2
Unlock:
P.S. В настройках Воблы, в разделе Cookies и заголовки HTTP есть Добавлять в HTTP заголовки "No-Cache". Что там выбрано?

Хм... Спасибо, и правда есть такое...

Результат при просмотре кода страницы удивительным образом не реагирует на эту настройку никак вообще. То есть появляется по-любому:

<head>
<!-- no cache headers -->
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="-1" />
<meta http-equiv="Cache-Control" content="no-cache" />
<!-- end no cache headers -->
Unlock
На сайте с 01.08.2004
Offline
785
#3
Jackyk:
Результат при просмотре кода страницы удивительным образом не реагирует на эту настройку никак вообще

Можно ручками в includes/functions.php поменять. Но я бы не стал этого делать. :)

Вообще такой тест с 5000 юзеров онлайн, сколько таких форумов в мире?

Jackyk
На сайте с 05.10.2005
Offline
342
#4
Unlock:
сколько таких форумов в мире?

Мне до мира дела нет совершенно. Есть конкретная задача, где при скачкАх посещаемости по ссылкам из твиттера и других соцсетей может быть в короткие моменты времени и много больше. Ручками подправил в темплэйте forumhome и .htaccess. Заголовки http поправились, но параметр Age все равно ноль, то есть получается - не кеширует.

И да, посмотрел я на кеширование vBulletin в файл - там кешируется далеко не все, например - сами сообщения не кешируются. То есть это все равно некая полумера.

Jackyk
На сайте с 05.10.2005
Offline
342
#5

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

Возможно, кто-либо знает, можно ли деактивировать cookies для незалогиненных юзеров?

И насколько другие внутренние способы кеширования самого vBulletin эффективны? То есть, vB_Datastore_Memcached, vB_Datastore_APC, vB_Datastore_XCache...

Насчет nginx, кстати:

Unlock:
nginx сейчас почти у всех хостеров перед апач стоит.

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

Unlock
На сайте с 01.08.2004
Offline
785
#6
Jackyk:
для кеширования динамических скриптов в статику

Что такое динамический скрипт?

А вообще тему лучше открыть на http://vbsupport.org/forum/ открыть, имхо, больше шансов, что ответят.

Jackyk
На сайте с 05.10.2005
Offline
342
#7
Unlock:
Что такое динамический скрипт?

Ну, на тот случай, если вопрос задан всерьез, а не в качестве придирки к возможно не самому удачному термину... Ну есть вот движок форума, который в нормальном режиме функционирования при каждом обращении юзера обращается к БД, причем с несколькими запросами. Как следствие при определенной нагрузке, коррелирующей с посещаемостью, сайт ложится, либо хостер начинает слать письма счастья о необходимости сменить тариф/арендовать сервер и т.д.. Другой вариант - поступать так исключительно с залогиненными юзерами, а незалогиненным отдавать статическую html-cтраницу вообще без единого обращения к БД и даже почти без обращения к файлам скрипта. И сохранять её в памяти кеширующего прокси, например, минут 10. Статику можно отдавать в огромных объемах, и способность хостинга переносить нагрузки и/или DDoS-атаки на Layer 7 (html-флуд) в случае, когда читателей много больше, чем писателей, возрастет на порядки.

N
На сайте с 06.05.2007
Offline
419
#8
Jackyk:
когда читателей много больше, чем писателей, возрастет на порядки.

это если ваш форум cуществует с чисто сеонизаторской целью.

Когда люди размещают сообщение, они предполагают что его прочитают тут же, а не завтра. Даже обозначенные 10 минут уже вызовут недопонимание.

Кнопка вызова админа ()
Jackyk
На сайте с 05.10.2005
Offline
342
#9
netwind:

Когда люди размещают сообщение, они предполагают что его прочитают тут же, а не завтра. Даже обозначенные 10 минут уже вызовут недопонимание.

Не вызовут. К тому же можно поставить не 10 минут, а 1. Или 10 секунд. Вопрос не в том, какой интервал поставить, а в том, что к БД пойдет одно обращение с несколькими запросами от кэширующей системы, а не 10.000 юзеров*15 запросов на каждого, как это будет без кэширования. А можно, если речь про внутреннее кэширование, перестраивать кэш после создания любого нового сообщения мгновенно, как делается в ряде CMS. Последнее, впрочем - теоретически, потому как можно ли на практике в vB - я не в курсе, о том и топик.

Unlock
На сайте с 01.08.2004
Offline
785
#10

Я очень извиняюсь, что не по теме, напоминает про секс и Красную площадь. :) Но очень удивлюсь, если на динамических проектах, тем более форумах, делают кеширование. По крайней мере такое, которое значительно снизит нагрузку и не убьет смысл проекта.

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

Вообще примечательно, что netwind, очень сильный спец по Вобле, ничего не ответил. Если бы было толковое решение, наверняка озвучил бы.

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий