ElitePen.ru - все о ручках :: Просмотр темы - Ускорение выдачи, использование memcache
Список форумов ElitePen.ru - все о ручках
 
Элитные письменные инструменты - информационный проект
Главная страница Напишите нам Поиск по сайту
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Реклама : Montegrappa

Ускорение выдачи, использование memcache

 
Начать новую тему   Ответить на тему    Список форумов ElitePen.ru - все о ручках -> Отзывы и пожелания к сайту
Предыдущая тема :: Следующая тема  
Автор Сообщение
DElf
Постоянный посетитель


Зарегистрирован: 20.07.2015
Сообщения: 190
Откуда: Миасс

СообщениеДобавлено: Вс 27 Сен 2015 г. 20:57:25    Заголовок сообщения: Ускорение выдачи, использование memcache Ответить с цитатой

Доброго времени суток,

У меня предложение по скорости работы сайта. В нагруженные часы ощущаются тормоза выдачи страниц Sad
Как таковой проблем не испытываю, но сижу на оптике и хочется чуть большей скорости от любимого форума. Думаю, многие разделяют мое желание.
Рассмотрите пожалуйста, частичный переход на memcached - если технические возможности позволяют это.

Цитата:
Итак имеем phpBB форум, который тормозит, а тормозит он бедняжка из-за базы mysql, которая не справляется с потоком SQL запросов. Но - в любом проекте есть такие SQL запросы, которые повторяются многократно, например, это запросы статистики. И бедняжка mysql загружен этими повторяющимися запросами. Вы скажите у mysql есть кеш - кеш то есть, только он не знает что данные не изменились и выполняет запрос снова. Ведь только мы знаем, что данные для некоторых запросов еще не изменятся часа 2.
Устанавливаем memcached под Debian или Ubunta.
Код:
apt-get install memcached php5-memcached

После установки не забываем перезагрузить apache или php-cgi. Что бы php увидел новые модули.
Включаем( если уже не включен) лог медленных запросов у mysql.
Код:
log_slow_queries = /var/log/mysql/mysql-slow.log
long_query_time = 3

и ждем с часик - пьем кофе и смотрим фильм. После просмотра любимого фильма смотрим что-же туда накапало. Если у вас там пусто - можно вас поздравить - вам еще не нужна оптимизация. У меня туда накапало порядка 4000 запросов - из них легко было выделить запросы типа :

Код:
SELECT_COUNT(user_id)_AS_total_____FROM_phpbb_users_____WHERE_user_id_<>_-1


Запрос постоянно подсчитывал количество пользователей форума на phpBB. Понятно, что это число не особо важно - это просто статистика. Значит данные по этому запросу можно закешировать часика на 2.

Для этого открываем файл includes/functions.php ищем функцию get_db_stat() - в ней лежат наши жирные запросики.

находим код:

Код:
if ( !($result = $db->sql_query($sql)) ){
    return false;
} $row = $db->sql_fetchrow($result);

изменяем на
Код:

$memcached = new Memcache;
$memcached->connect('localhost', 11211);

if(!$row = $memcached->get($sql)){
    if ( !($result = $db->sql_query($sql)) ){
        return false;
    } $row = $db->sql_fetchrow($result);

    $memcached->set($sql, $row, MEMCACHE_COMPRESSED, time() + 7200);
}$memcached->close();


Смысл изменения состоит в том, что в memcached данные хранятся парами (ключ, значение). Ключём служит SQL запрос - он уникальный. Алгоритм приведенного кода состоит в следующем:
соединяемся с memcached, смотрим если такие данные по ключу, если нет только тогда дергаем базу, если есть - то идем дальше - не посылая на базу никаких запросов. Надеюсь экономия всем понятна.

Немного о грустном - модов для phpBB + memcache я не нашел. Зато в phpbb3 эта поддержка заявлена. А для phpBB2 придется самому выискивать такие запросики для кеширования, а ведь еще есть моды - они тоже генерят запросики. Если все сделать правильно - тормоза базы можно сократить в 2-3 раза.


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

p.s. надеюсь на ваше понимание и содействие.

_________________
Чернильный шопоголик
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов ElitePen.ru - все о ручках -> Отзывы и пожелания к сайту Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы можете скачивать файлы



  Rambler's Top100
Powered by phpBB © 2001, 2002 phpBB Group