Пишу про заинтересовавшие сервисы, блоги, твиттеры, а также собственные идеи и задумки.

Оптимизируем сервак. Memcache

4 марта 2011, 12:00


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

Хорошим тоном нынче является связка Apache + Nginx, которая работает чуть быстрее по сравнению с обычным Апачем, в силу особенностей передачи запросов от Nginx ему. Дополнением к этой связке будет служить мод memcache и eAccelerator, которые призваны кэшировать и ускорять выполнение php-скриптов.

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

Установка memcache. Способ 1

Всё ниже описанное подходит для серверов с CentOS 5 и им подобным.

Зайдите в шелл (для этого можно использовать популярную программку PuTTy) и вводите следующие команды (можно копировать здесь и вставлять туда правой кнопкой мыши):

cd /usr/local/src
wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.1-1.el5.rf.i386.rpm
rpm -ivh rpmforge-release-0.5.1-1.el5.rf.i386.rpm
yum -y install memcached

После чего в файле /etc/sysconfig/memcached и замените параметр OPTIONS на:

OPTIONS="-l 127.0.0.1"

Добавляем memcache в автозагрузку командами:

/etc/init.d/memcached start
chkconfig memcached on

Следующим пунктом нужно установить библиотеку PHP-memcache:

yum -y install php-pecl-memcache

В файл php.ini (в /etc/) в секцию [extensions] внесите строчку:

extension=memcache.so

Перезагрузите httpd:

/etc/init.d/httpd restart

или

service httpd restart

Установка memcache. Способ 2

yum install libmemcache memcached -y

Стартуем:

memcached -d -m 256 -l 127.0.0.1 -p 11211 -u nobody

Можно также добавить в автозагрузку командами из предыдущего способа. Для следующего шага потребуется наличие библиотеки phpize. Если таковой нет, нужно установить php-devel:

yum install zlib-devel

Устанавливаем библиотеку для работы с PHP:

wget http://pecl.php.net/get/memcache-2.1.2.tgz
tar -xvf memcache-2.1.2.tgz && cd memcache-2.1.2
phpize && ./configure --enable-memcache && make && make install

В файл php.ini (в /etc/) в секцию [extensions] внесите строчку:

extension=memcache.so

Теперь библиотека установлена и должна работать. Обычно она ускоряет работу скриптов примерно на 30%.

4 комментария
Ильнур

Спасибо за советы! То что нужно для движка Social Engine!

Andi

Привет!
А как быть, когда выполняешь команду


/etc/init.d/memcached start


а в ответ получаешь:


Starting memcached: chown: `memcached\r': invalid user
to switch toe user memcached
[FAILED]


Уже потратил пару часов на решение проблемы и всё в пустую...

StereoMaster

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

Александр Неважный

Спасибо за статью! Все получилось сделать с первого раза способом 2 вперемешку со способом 1 :)

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

ХТМЛ не работает

Ctrl + Enter
Популярное