Ускорение сайта Битрикс на ubuntu server, Memcached.

/ Просмотров: 3993

Что такое memcacheed- наверное знает каждый, но на всякий повторюсь. Это алгоритм кэширования различных объектов в оперативной памяти. Позволяет, используя специальное API (для Perl, PHP, Python, Java и др.), сохранить в ОЗУ блок данных, сопоставленный с определённым символьным ключом. Был разработан для сайта LiveJournal, имеющего более миллиона посетителей в сутки. Его применение снизило загрузку серверов баз данных в разы. В API memcached есть только базовые функции: выбор сервера, установка и разрыв соединения, добавление, удаление, обновление и получение объекта. Для каждого объекта устанавливается время жизни от 1 секунды до бесконечности. При переполнении памяти более старые объекты автоматически удаляются.

Говоря по-простому, memcacheed хранит в оперативной памяти готовые ответы базы данных, тем самым снижая с нее нагрузку и ускоряя скорость ответа на запрос пользователя.

ЗАЧЕМ МНЕ MEMCACHE

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

Последние четыре месяца сайт работал на виртуальном сервере, арендованном у keyweb.ru, в принципе, нареканий никаких и обращаться в техподдержку не приходилось. Но количество сайтов на сервере растет, нагрузка на виртуалку повышается, начал задумываться о приобретении аренды на выделенный сервер там же, на keyweb-е. Однако, обстоятельства подкачали, неделю назад сервер неожиданно потух. Практически незамедлительно написал в техподдержку очень развернутый вопрос, ответом получил короткое "Посмотрим" и тишина на час. "Нафиг, нафиг" - подумал я и начал мониторить другие компании.

В итоге, сегодня приобрел на пробу полноценный сервер: AMD Athlon 64 X 3500, 8 Гб ОЗУ, 320 Гб RAID и безлимитный трафик на 1Гб/с. Для пробы, да в принципе и вообще на первое время- пойдет под пяток не высоконагруженных сайтов. Все это за 36 Евро, на что надеются Российские хостинг компании с маленькими дисками, маленькой ОЗУ и ограниченным трафиком за минимум 3000 руб. не знаю, но раз дерут значит есть с кого.

Ух, высказался, теперь самое главное:

УСТАНОВКА MEMCACHE НА UBUNTU SERVER ДЛЯ БИТРИКС

Для начала поднимаем просто WEB сервер и запиливаем под Битрикс, ссылку на инструкцию дал выше. Дальше:

Устанавливаем memcached:

apt-get install memcached  

Идем в настройки memcached nano /etc/memcached.conf и приводим к такому виду:

#Memcached будет работать, как демон 
-d 
#Лог будет складывать туда 
logfile /var/log/memcached.log 
#Для начала поставьте 256 мегабайт ОЗУ под хранилище. Но больше заисит от ее колличества 
#помните, что выставив 256 Вы ровно столько забираете от оперативки 
#лично у меня на данный момент стоит 512 
-m 256 
#Слушать будет этот порт 
-p 11211 
#Пользователь 
-u nobody 
#Слушаем localhost 
-l 127.0.0.1

Перезапускаем memcached:

/etc/init.d/memcached restart

Устанавливаем модуль для PHP:

apt-get install php5-dev libmemcache-dev 

pecl download memcache 
tar xzvf memcache-2.2.7.tgz //nen здесь внимательно, я послежу но смотрите на версию 2,2,7 крайняя 
cd memcache-2.2.7/ 
phpize && ./configure --enable-memcache && make 
cp modules/memcache.so /usr/lib/php5/20060613/ //тут тоже обратите внимание на цифры у себя 

echo 'extension=memcache.so' >> /etc/php5/apache2/php.ini 
/etc/init.d/apache2 restart

Собственно все, установлено и настроено. Запускаем битрикс сайт на сервере, и идем папку/bitrix/php_interface и открываем файл dbconn.php

В него вносим следующее:

define("BX_CACHE_TYPE", "memcache"); //устанавливаем тип кеширования 
define("BX_CACHE_SID", $_SERVER["DOCUMENT_ROOT"]."#01"); //это не даст кешам разных сайтов перемешаться 
define("BX_MEMCACHE_HOST", "127.0.0.1"); //это адрес где работает мемкешед (в нашем случае локально)

Собственно совсем все. Таким образом, я запустил на сервере 8 сайтов на битрикс, один из них неплохо посещаемый интернет магазин с каталогом на 30 тыс. позиций. Погоняю месяцок и отпишусь в этой теме...как оно хреново или не очень)) Успехов.

PS: В новой 14-ой версии 1С битрикс настройки перенесены в файл /bitrix/.settings.php и тип кеширование необходимо устанавливать в секции:

'cache' => 
array ( 
'value' => 
array ( 
'sid' => '$_SERVER["DOCUMENT_ROOT"]."#01"', 
'type' => 'memcache', 
'memcache' => 
array ( 
'host' => '127.0.0.1', 
), 
), 
'readonly' => false, 
),

Дополнительно можете установить nginx чтобы совсем летало.

Оставьте комментарий!

Комментарий будет опубликован после проверки

Имя и сайт используются только при регистрации

(обязательно)