Разработка сайтов на UMI.CMS
Знать UMI.CMS в совершенстве невозможно.
Даже сами разработчики знают о ней не все...

UMi

Ursa Minor

Memcached

Дата публикации: 01.08.2014

 

Memcached  обеспечивает хранение пар ключ-значение (хэш) в оперативной памяти, что позволяет передавать данные между запускаи php-скрипта. Т.о. можно сохранять результаты ресурсоемких операций при первом запуске скрипта и читать их при последующих запусках.

Доступ к хэшу можно получить через простой сетевой протокол или unix-сокет.

 

Обращаю внимание, что клиенты для php memchace и memcached - это разные библиотеки. Я выбрал memcached как более новую. К сожалению, UMI.CMS не поддерживает его, но дополнительный кеширующий механизм можно добавить.

Установка memcached и модуля для php в Ubuntu/Debian:

aptitude install memcached php5-memcached

После установки memcached надо перезапустить  apache или php5-fpm.

 

Теперь поправим некоторые настройки. Конфиг расположен в /etc/memcached.conf. В целом, конфиг нас устраивает и по умолчанию, но я меняю несколько параметров.  Идем в /etc/memcached.conf

1) Увеличить количество памяти.

# Start with a cap of 64 megs of memory. It's reasonable, and the daemon default
# Note that the daemon will grow to this size, but does not start out holding this much
# memory
-m 256M
#добавить памяти сколько не жалко

2) Пользователем ставлю www-data

# Run the daemon as root. The start-memcached will default to running as root if no
# -u command is present in this config file
-u www-data

3) Запретить уходить в swap, иначе катастрафически падает производительность. Конечно, памяти долно быть достаточно (в моем случае 12Гб)

# Lock down all paged memory. Consult with the README and homepage before you do this
-k

3а) К сожалению, просто так параметр -k не сработает. После перезапуска memcached в логах увидим

warning: -k invalid, mlockall() failed: Cannot allocate memory

Что означет, что требуемое количество памяти не может быть выделено. ОК, почему?  Потому что:

ulimit-l
64

 по умолчанию установлен лимит в 64kb

Теперь нужно открыть файл /etc/security/limits.conf  и вписать туда строки:

www-data            -       memlock         262144
root            -       memlock         262144

где
www-data - имя пользователя, от которого работает memcached
memlock - название функции
262144 - объем памяти в кБ

На буржуйских форумах утверждается, что достаточно изменить лимиты для root, но у меня так не получилось, пока не задал его и для www-data

Изменения в /etc/security/limits.conf коснутся всех новых сессий. Это не повлияет на процессы, которые уже запущены. Поэтому, чтобы изменения применились, придется выйти из системы и войти снова, или начать новую сессию ssh, после чего перезапустить процесс.

 

4) Будем работать с memcached через unix-сокет, что быстрее, чем через сеть

Для этого комментируем настройки сети:

# Default connection port is 11211
#-p 11211 

# Specify which IP address to listen on. The default is to listen on all IP addresses
# This parameter is one of the only security measures that memcached has, so make sure
# it's listening on a firewalled interface.
#-l 127.0.0.1

и добавляем:

#-s  unix socket path to listen on (disables network support)
-s /var/run/memcached/memcached.sock

#-a  access mask for unix socket, in octal (default 0700)
-a 0755

Здесь заданы права доступа к файлу сокета и путь к нему.

Создаем  папку сокета и меняем владельца:

mkdir /var/run/memcached -m 0755 
chown www-data:www-data /var/run/memcached

 

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

Теперь можно идти в php и работать с ним:

 

$mc = new Memcached();
$mc->addServer('/var/run/memcached/memcached.sock',0);

 

 

 

 

 

 

Новости

30.10.2016

Обновлено описание макроса для вывода всех элементов справочника UMI.CMS с учетом версии 14.

 

21.07.2015

Памятка по обновлению до debian 8.1. Приятно вкусить все плюшки PHP 5.6

11.11.2014

Как выполнить SQL-запрос из bash-скрипта. Памятка

11.11.2014

Как отследить нагрузку сайта на сервер.

06.11.2014

Заготовка для галереи изображений с прокруткой. Не знаю, когда дойдут руки довести ее до вида плагина, поэтому открываю как есть. Можно доработать.

05.11.2014

Выкладываю как заготовку свой слайдер изображений на mootools

Все обновления