- linux-notes.org
- Установка memcached в Unix/Linux
- Работа с memcached в Unix/Linux
- Получить ( Показать) статус memcached.
- Очистить ( сбросить) memcached кеш
- Добавить комментарий Отменить ответ
- Memcached и PHP ликбез
- Что такое Memcache и какое отношение он имеет к PHP?
- Установка и настройка
- Устанавливаем сервер Memcached
- Компилируем и устанавливаем модуль для PHP
- Примеры использования
- 1. Базовые операции
- 2. Повышаем производительность
- Ещё несколько полезных функций
- linux-notes.org
- Установка memcached в Unix/Linux(CentOS/Debian/Ubuntu)
- Установка memcached в Debian/Ubuntu
- Установка memcached в RedHat/CentOS/Fedora
- Настройка memcached
- Тестирование/проверка работы Memcached
- Проверка настройки MemCache
- Настройка фаэрвола для Memcached
- Добавить комментарий Отменить ответ
- memcached(1) — Linux man page
- Synopsis
- Description
- Options
linux-notes.org
Очередная статья на тему «Работа с memcached в Unix/Linux» и я в ней расскажу как работать с memcached в ОС Unix/Linux и приведу наглядные примеры.
Установка memcached в Unix/Linux
Вот статья как установить memcached, можно прочитать:
Возможно, приведу пример подробной настройке ( но попозже).
Работа с memcached в Unix/Linux
Приведу наглядные примеры по работе с memcached.
Получить ( Показать) статус memcached.
Вот простой «top» эмулятор для memcached:
PS: Я использую локальную машину ( локалхост, 127.0.0.1), если вы хотите подключатся к удаленной машине, то замените ИП. Так же, не забываем сменить порт ( если настроили по другому).
Если вы хотите просмотреть подробную информацию об использовании кэша найти конкретный ключ, вы можете использовать одну из следующих команд:
- stats items — показывает информацию о количестве элементов в каждой плите (slab) со включающей нумерацией времени ( элементы, которые были очищены, прежде чем они истекли (inserted) или элементы не смогли быть вставлены потому, что slab вышел за пределы памяти (out of memory):
Для начала подключимся:
После чего смотрим статистику:
stats slabs — покажет более детальную статистику по каждому slab, такие как количество страниц (которые были выделены) и процент имеющихся кусков, которые используются:
- Для просмотра item-ов:
Для тех у кого нет nc, но есть php:
Очистить ( сбросить) memcached кеш
Вы можете очистить все существующие элементы кэша с помощью команды flush_all. Вы можете отправить flush_all команду, используя nc или netcat утилиты:
Или можно еще одним способом:
- 192.168.1.10 или localhost– сервер где установлен memcached
- 11211 – порт который использует memcached.
Сейчас я расскажу как можно сбросить кэш с помощью telnet:
Статья «Работа с memcached в Unix/Linux» завершена.
Добавить комментарий Отменить ответ
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
Источник
Memcached и PHP ликбез
Что такое Memcache и какое отношение он имеет к PHP?
Memcache разработан для кэширования данных, генерация которых требует большого количества ресурсов. Такого рода данные могут содержать что угодно, начиная с результатов запроса к базе данных и заканчивая тяжеловесным куском шаблона. Memcached не входит в базовый набор модулей, поставляемых с PHP, однако он доступен в репозитории pecl.
Установка и настройка
В качестве рассматриваемого дистрибутива я решил использовать Debian, потому как он наиболее часто используется при создании web-серверов. Модуль Memcached для PHP доступен в репозитории уже скомпилированным (php5-memcached), но я опишу процесс установки из исходного кода, так как не все репозитории настолько богаты, как дебиановский.
Устанавливаем сервер Memcached
#/etc/memcached.conf
#Memcached будет работать, как демон
-d
#Лог будет складывать туда
logfile / var / log / memcached.log
#Отведём 256 мегабайт ОЗУ под хранилище
-m 256
#Слушать будет этот порт
-p 11211
#В последствии желательно поменять
-u nobody
#Слушаем localhost
-l 127.0.0.1
Проверяем
# netstat -tap | grep memcached
tcp 0 0 localhost: 11211 * : * LISTEN 13036 / memcached
Компилируем и устанавливаем модуль для PHP
apt-get install php5-dev libmemcache-dev
pecl download memcache
tar xzvf memcache-2.2.6.tgz
cd memcache-2.2.6 /
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
Примеры использования
1. Базовые операции
- //Создаём новый объект. Также можно писать и в процедурном стиле
- $memcache_obj = new Memcache ;
- //Соединяемся с нашим сервером
- $memcache_obj -> connect ( ‘127.0.0.1’ , 11211 ) or die ( «Could not connect» ) ;
- //Попытаемся получить объект с ключом our_var
- $var_key = @ $memcache_obj -> get ( ‘our_var’ ) ;
- if ( ! empty ( $var_key ) )
- <
- //Если объект закэширован, выводим его значение
- echo $var_key ;
- >
- else
- <
- //Если в кэше нет объекта с ключом our_var, создадим его
- //Объект our_var будет храниться 5 секунд и не будет сжат
- $memcache_obj -> set ( ‘our_var’ , date ( ‘G:i:s’ ) , false , 5 ) ;
- //Выведем закэшированные данные
- echo $memcache_obj -> get ( ‘our_var’ ) ;
- >
- //Закрываем соединение с сервером Memcached
- $memcache_obj -> close ( ) ;
- ?>
В результате выполнения этого кода каждый раз будет выводиться время с точностью до секунд. Однако обновляться оно будет раз в 5 секунд, пока не очистится кэш. В данном примере проиллюстрированы самые простые операции, но в производительности мы скорее потеряем, чем выиграем. Ведь нам каждый раз придётся подключаться к серверу…
2. Повышаем производительность
2.1 С кэшированием
- ? php
- function LoadCPU ( )
- <
- //Функция, которая должна зугрузить процессор
- //Создадим изображение 800×600
- $image = imagecreate ( 800 , 600 ) ;
- //Белый фоновый цвет
- $color = imagecolorallocate ( $image, 255 , 255 , 255 ) ;
- //Чёрный
- $color2 = imagecolorallocate ( $image, 0 , 0 , 0 ) ;
- for ( $i = 0 ; $i 10000 ; $i ++ ) <
- //Расставим 10 000 точек в случайном порядке
- imagesetpixel ( $image, rand ( 0 , 800 ) , rand ( 0 , 600 ) , $color2 ) ;
- >
- //Выбрасываем указатель
- return $image ;
- >
- //Создаём новый объект Memcache
- $memcache_obj = new Memcache ;
- //Соединяемся с нашим сервером
- $memcache_obj — > connect ( ‘127.0.0.1’ , 11211 ) or die ( «Could not connect» ) ;
- //Попытаемся получить объект с ключом image
- $image_bin = @$memcache_obj — > get ( ‘image’ ) ;
- if ( empty ( $image_bin ) ) <
- //Если в кэше нет картинки, сгенерируем её и закэшируем
- imagepng ( LoadCPU ( ) ,getcwd ( ) . ‘/tmp.png’ , 9 ) ;
- $image_bin = file_get_contents ( getcwd ( ) . ‘/tmp.png’ ) ;
- unlink ( getcwd ( ) . ‘/tmp.png’ ) ;
- $memcache_obj — > set ( ‘image’ , $image_bin, false , 30 ) ;
- >
- //Выведем картинку из кэша
- header ( ‘Content-type: image/png’ ) ;
- echo $image_bin ;
- //Закрываем соединение с сервером Memcached
- $memcache_obj — > close ( ) ;
- ? >
В данном примере приведена функция, которая создаёт изображение размером 800×600 и расставляет на нём 10 000 точек. Один раз, сгенерировав такое изображение, в дальнейшем мы лишь выводим его на экран, не генерируя заново.
2.2 Без кэширования
- function LoadCPU ( )
- <
- //Функция, которая должна загрузить процессор
- //Создадим изображение 800×600
- $image = imagecreate ( 800 , 600 ) ;
- //Белый фоновый цвет
- $color = imagecolorallocate ( $image , 255 , 255 , 255 ) ;
- //Чёрный
- $color2 = imagecolorallocate ( $image , 0 , 0 , 0 ) ;
- for ( $i = 0 ; $i 10000 ; $i ++ ) <
- //Расставим 10 000 точек в случайном порядке
- imagesetpixel ( $image , rand ( 0 , 800 ) , rand ( 0 , 600 ) , $color2 ) ;
- >
- //Выбрасываем указатель
- return $image ;
- >
- //Выводим изображение, не кэшируя
- header ( ‘Content-type: image/png’ ) ;
- imagepng ( LoadCPU ( ) , » , 9 ) ;
- ?>
Тут всё гораздо проще и привычней: генерируем изображение каждый раз заново.
Результаты
Я протестировал оба скрипта на производительность. Одна и та же машина в первом случае выдала 460 ответов в секунду, а во втором лишь 10. Чего и следовало ожидать.
Ещё несколько полезных функций
addServer — в случае, если у вас в распоряжении несколько кэширующих серверов, вы можете создать некий кластер, добавляя сервера в пул. Следует обратить внимание на параметр weight. Он указывает на то, сколько памяти вам будет доступно на конкретном сервере.
delete — из названия понятно, что данный метод удаляет из кэша объект с заданным ключом.
replace — заменяет значение объекта с заданным ключом. Используйте в случае, если Вам понадобится изменить содержимое объекта, раньше чем истечёт время его жизни.
С моей точки зрения, применять кэширование стоит только на высоконагруженных ресурсах. Ведь каждый раз, подключаясь к серверу Memcached, вы тратите драгоценное время, что скорее всего не будет оправданным. Что касается больших проектов, лучше сразу написать больше строк кода, чем потом делать это в попыхах, с мыслью о том, что ваш сервис лежит. Также не стоит забывать о расходовании памяти! Учтите, что положив 300 мегабайт в кэш, вы отняли у себя 300 мегабайт ОЗУ.
В завершение хочу сказать, что данная статья не раскрывает все прелести технологии, однако я надеюсь, что она стимулирует Вас к самосовершенствованию. Спасибо за прочтение, многоуважаемый %username%!
UPD: Ещё один интересный момент. Memcached, есть PHP API к libmemcached. А Memcache, библиотека для php, не использующая libmemcached.
Источник
linux-notes.org
Установка memcached в Unix/Linux(CentOS/Debian/Ubuntu)
Memcached — это система которая кеширует все данные в память. Это означает, что вы можете генерировать кэш самым быстрым способом что позволит быстрее использовать приложения с самыми современными языками программирования, таких как Python, PHP, Ruby, и т.д. В своей теме «Установка memcached в Unix/Linux(CentOS/Debian/Ubuntu)» я расскажу как можно установить memcached на Unix/Linux и на готовом примере, покажу как я это делал. Для тестирования, я выбрал CentOS 6 и Debian 8.
Установка memcached в Debian/Ubuntu
Во-первых, я рекомендую обновить систему:
Теперь используйте следующую команду для установки Memcached:
Теперь я установлю PHP с несколькими необходимыми пакетами:
Также необходимо установить модуль MemCache для PHP:
Наконец выполняем установку расширения Memcache php с помощью PECL:
Теперь включим поддержку MemCache в PHP. Прежде чем создавать новый файл просто убедитесь, возможно он уже существует и если файл уже существует просто пропустите команду что ниже:
После всех изменений, производим перезапуск службы Apache:
Установка memcached в RedHat/CentOS/Fedora
Для начала, обновим ОС:
После обновления, выполняем установку memcached:
Настройка memcached
Убедитесь, что в данном файле конфигурации имеются следующие строки:
PORT 11211 является портом прослушивания по умолчанию для Memcached.
USER — это пользователь memcached от которого будет запущен демон.
MAXCONN — максимальные количество возможных соединений.
CACHESIZE — это количество мегабайт (64 MB) для использования, если у вас есть много трафика, это хорошо для большинства малых/средних сайтов. Для загруженного сервера вы можете увеличить его на 512 или 1 Гб (1024 MB).
OPTIONS=»-l 127.0.0.1″ — это означает что memcached будет слушать только на localhost-е, избегая каких-либо внешних подключений. Вы можете установить IP-адрес сервера. По умолчанию он установлен в INADDR_ANY. Это важно опция, поскольку нет никакого другого способа обеспечить установку. Привязка к внутреннему или межсетевому интерфейсу предлагается.
Для CentOS/RHEL 6/5:
запуск Memcached выполняется:
Пропишем memcached в загрузку ОС:
Для CentOS/RHEL 7:
Устновка PHP расширений с Memcached.
Если PECL при установке задаст вам вопрос, который вы видите ниже, просто нажмите ENTER:
У меня возникла ошибка:
Добавим модуль memcache.so module в php.ini
Перезапускаем службы.
Если на вашем сервере установлен php-fpm, то чтобы перезапустить его, выполните:
Если на вашем сервере установлен apache, то чтобы перезапустить его, выполните:
Для CentOS/RHEL 7:
Для CentOS/RHEL 6/5:
Тестирование/проверка работы Memcached
Проверка настройки MemCache
Использование следующую команду, чтобы проверить и убедиться, что Memcached служба работает нормально:
Теперь нужно проверить, включено ли расширение и удостоверимся что работает правильно. Создайте файл в домашнем каталоге и пропишите следующий ПХП код:
Если открыть сайт, то увидим:
Проверьте, установлен ли Memcached как модуль PHP:
Настройка фаэрвола для Memcached
Добавьте слудеющие правила для разрешения соедения (для работы memcached):
Проверяем, запущен ли демон memcached на ОС:
На этом, статья «Установка memcached в Unix/Linux(CentOS/Debian/Ubuntu)» завершена.
Добавить комментарий Отменить ответ
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
Источник
memcached(1) — Linux man page
Synopsis
Description
memcached is a flexible memory object caching daemon designed to alleviate database load in dynamic web applications by storing objects in memory. It’s based on libevent to scale to any size needed, and is specifically optimized to avoid swapping and always use non-blocking I/O.
Options
Permissions (in octal format) for Unix socket created with -s option. -l Listen on ; default to INADDR_ANY. This is an important option to consider as there is no other way to secure the installation. Binding to an internal or firewalled network interface is suggested. -d Run memcached as a daemon. -u Assume the identity of (only when run as root). -m Use MB memory max to use for object storage; the default is 64 megabytes. -c Use max simultaneous connections; the default is 1024. -R This option seeks to prevent client starvation by setting a limit to the number of sequential requests the server will process from an individual client connection. Once a connection has exceeded this value, the server will attempt to process I/O on other connections before handling any further request from this connection. The default value for this option is 20. -k Lock down all paged memory. This is a somewhat dangerous option with large caches, so consult the README and memcached homepage for configuration suggestions. -p Listen on TCP port , the default is port 11211. -U Listen on UDP port , the default is port 11211, 0 is off. -M Disable automatic removal of items from the cache when out of memory. Additions will not be possible until adequate space is freed up. -r Raise the core file size limit to the maximum allowable. -f Use as the multiplier for computing the sizes of memory chunks that items are stored in. A lower value may result in less wasted memory depending on the total amount of memory available and the distribution of item sizes. The default is 1.25. -n Allocate a minimum of bytes for the item key, value, and flags. The default is 48. If you have a lot of small keys and values, you can get a significant memory efficiency gain with a lower value. If you use a high chunk growth factor (-f option), on the other hand, you may want to increase the size to allow a bigger percentage of your items to fit in the most densely packed (smallest) chunks. -C Disable the use of CAS (and reduce the per-item size by 8 bytes). -h Show the version of memcached and a summary of options. -v Be verbose during the event loop; print out errors and warnings. -vv Be even more verbose; same as -v but also print client commands and responses. -i Print memcached and libevent licenses. -P Print pidfile to , only used under -d option. -t Number of threads to use to process incoming requests. This option is only meaningful if memcached was compiled with thread support enabled. It is typically not useful to set this higher than the number of CPU cores on the memcached server. The default is 4. -D Use as the delimiter between key prefixes and IDs. This is used for per-prefix stats reporting. The default is «:» (colon). If this option is specified, stats collection is turned on automatically; if not, then it may be turned on by sending the «stats detail on» command to the server. -L Try to use large memory pages (if available). Increasing the memory page size could reduce the number of TLB misses and improve the performance. In order to get large pages from the OS, memcached will allocate the total item-cache in one large chunk. Only available if supported on your OS. -B
Specify the binding protocol to use. By default, the server will autonegotiate client connections. By using this option, you can specify the protocol clients must speak. Possible options are «auto» (the default, autonegotiation behavior), «ascii» and «binary». -I Override the default size of each slab page. Default is 1mb. Default is 1m, minimum is 1k, max is 128m. Adjusting this value changes the item size limit. Beware that this also increases the number of slabs (use -v to view), and the overal memory usage of memcached.
Источник