Что такое 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:
Идем в настройки memcached nano /etc/memcached.conf и приводим к такому виду:
-d
#Лог будет складывать туда
logfile /var/log/memcached.log
#Для начала поставьте 256 мегабайт ОЗУ под хранилище. Но больше заисит от ее колличества
#помните, что выставив 256 Вы ровно столько забираете от оперативки
#лично у меня на данный момент стоит 512
-m 256
#Слушать будет этот порт
-p 11211
#Пользователь
-u nobody
#Слушаем localhost
-l 127.0.0.1
Перезапускаем memcached:
Устанавливаем модуль для PHP:
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_SID", $_SERVER["DOCUMENT_ROOT"]."#01"); //это не даст кешам разных сайтов перемешаться
define("BX_MEMCACHE_HOST", "127.0.0.1"); //это адрес где работает мемкешед (в нашем случае локально)
Собственно совсем все. Таким образом, я запустил на сервере 8 сайтов на битрикс, один из них неплохо посещаемый интернет магазин с каталогом на 30 тыс. позиций. Погоняю месяцок и отпишусь в этой теме...как оно хреново или не очень)) Успехов.
PS: В новой 14-ой версии 1С битрикс настройки перенесены в файл /bitrix/.settings.php и тип кеширование необходимо устанавливать в секции:
array (
'value' =>
array (
'sid' => '$_SERVER["DOCUMENT_ROOT"]."#01"',
'type' => 'memcache',
'memcache' =>
array (
'host' => '127.0.0.1',
),
),
'readonly' => false,
),
Дополнительно можете установить nginx чтобы совсем летало.