Below is the text of the page https://diff.org.ua/archives/3009 stored 2019-04-05 by archive.org.ua. The original page over time could change. View as original html

Debian Jessie: WEB-сервер — ускоряемся … (memcached, xcache) | d

diff.org.ua [http://diff.org.ua/] Linux/BSD Проще не бывает! ДОМОЙ BMW BSD Linux Various Web Windows Debian Jessie: WEB-сервер — ускоряемся … (memcached, xcache) Это заметка из цикла стетей моего небольшого HowTo по Debian Jessie. Попробуем немного ускорить выдачу сервером web-контента. Начнем с простого пятиминутного тюнинга … сессии. По умолчанию сессии пользователей на сервере хранятся в виде отдельных файликов на файловой системе в директории /var/lib/php5/sessions Это вполне отлично при малом количестве посетителей ресурса, но становится проблемой при увеличении посещаемости, так как дисковые операции очень «дорогие» и «тяжелые» с точки зрения сервера. Такой способ хранения сессий порождает излишнюю нагрузку на дисковую подсистему сервера и замедляет выдачу контента пользователям. Выход придуман давным давно — перенести сессии в RAM-у сервера. Простейшим решением является сервис memcached который представляет из себя key value базу данных работающую исключительно в оперативной памяти. Это, кстати, таит в себе и побочный неприятный момент — в случае перезапуска сервиса memcached или сервера целяком — база очищается, а значит пользователям придется «перелогиниться». Если это критичный для вас момент — тогда лучше использовать сервис который синкает базу данных на диск, например couchbase или redis. Но я не дорожу своими сессиями, потому что пользователей у меня чуть больше чем 1 🙂 поэтому буду использовать memcached Установим необходимые пакеты: gw:~$ sudo apt-get install memcached php5-memcached Открываем основной конфиг memcached: gw:~$ sudo vim /etc/memcached.conf По умолчанию сервис запускается с базой в 64MB, для меня это мало (чуть позже расскажу почему) — ставлю 128 MB: -m 128 Запускаем службу memcached: gw:~$ sudo systemctl start memcached Проверяем что служба «слушает» порт 11211: gw:~$ sudo netstat -lnp | grep mem tcp 0 0 127.0.0.1: 11211 0.0.0.0: * LISTEN 3187 / memcached udp 0 0 127.0.0.1: 11211 0.0.0.0: * 3187 / memcached gw:~$ Теперь перестроим php таким образом чтобы он хранил сессии в memcached, а не в файлах на диске. Открываем конфиг php.ini для fpm: gw:~$ sudo vim /etc/php5/fpm/php.ini Ищем там секцию [Session] и настраиваем ее вот так (привожу только те параметры что поменял, остальные оставляем по дефолту): session.save_handler = memcached session.save_path = "127.0.0.1:11211" session.gc_probability = 1 Перезапускаем сервис php5-fpm: gw:~$ sudo systemctl restart php5-fpm.service Если вы используете в apache2 модуль php5 то у него есть отдельный конфиг ( /etc/php5/apache2/php.ini ), операцию по перестройке его на memcached сессионное хранилище нужно повторить по аналогии с php5-fpm, после чего перегрузить сервис apache2 Поскольку memcached давно откатанный и стабильный вариант работы с RAM хранилищем в PHP (и не только) в различных WEB проектах его используют не только для хранения сессий, но и как хранилку кеша. Для популярных CMS есть готовые модули которые умеют запихивать в memcache куски страниц или даже целые страницы готового скомпилированного HTML-я. Это позволяем в разы увеличить скорость выдачи контента и при этом уменьшить нагрузку на сервер (магия?) но требует серьезной проработки кода проекта под фичу кеширования вцелом. Вот примеры среди популярных бесплатных CMS: — Drupal 6/7 — тыц — WordPress — тыц — Joomla — тыц и тд. Я отдал memcached-у 128MB RAM именно для этого варианта кеширования. Ставим модуль, настраиваем, пользуемся и радуемся дикому приросту скорости отдачи контента. Имейте ввиду что кеш очищается при рестарте сервиса memcached. С memcached вроде как все ясно, неясно одно — почему решение вопроса «кешировать или компилить» должен решать программист конкретного продукта с помощью сторонних приложений, а не сам php? Это вполне логичный вопрос и он имеет решение в виде модулей для php которые призваны этим заниматься. Их много, почитать коротко о них можно здесь , ИМХО — достаточно вменяемый на сегодняшний день XCache , он достаточно стабилен и продолжает развиваться. Достаточно часто встречал в сети лестные отзывы о нем. Пробую прикрутить … Установим необходимые пакеты: gw:~$ sudo apt-get install php5-xcache Приятной особенностью данного модуля является наличие web-админки где можно посмотреть текущие настройки, статистику, очистить кеш и тп Это не обязательная фича данного модуля, можно не заморачиваться, но мне было интересно — решил настроить. Генерим пароль в админку XCache (иначе никак): gw:~$ echo -n "_mypassword_" | md5sum 34819d7beeabb9260a5c854bc85b3e44 - gw:~$ Для настройки модуля xcache открываем его конфиг: gw:~$ sudo vim /etc/php5/fpm/conf.d/20-xcache.ini Вот такой конфиг получился (только то что поменял от дефолта): [xcache.admin] xcache.admin.enable_auth = On ; Configure this to use admin pages xcache.admin.user = "xcache_admin" ; xcache.admin.pass = md5($your_password) xcache.admin.pass = "34819d7beeabb9260a5c854bc85b3e44" xcache.size = 64M xcache.count = 2 xcache.gc_interval = 86400 xcache.var_size = 8M xcache.var_count = 2 xcache.var_gc_interval = 86400 xcache.optimizer = On Перезапускаем сервис php5-fpm: gw:~$ sudo systemctl restart php5-fpm.service Про настройку WEB-интерфейса данного модуля расскажу чуть позже, настроим его вместе с другими популярными WEB-приложениями (PHPMyAdmin, PostfixAdmin, Roundcube). Теоретически такой вариант кеширования должен работать быстрее чем основанный на memcached, чтобы убедиться в этом нужно тестировать, но это уже отдельная тема. Модуль работает сразу после его включения в php5. Для большей эффективности можно использовать плагины со стороны CMS, например для WordPress можно попробовать вот этот модуль. Устанавливается он не сложно, по инструкции. Дополнительных действий никаких, просто ждем пока наполнится кеш и наступит нирвана 🙂 Напомню что в данном варианте кеш очищается при рестарте сервиса php5-fpm Незнаю будет ли кому полезно, получилось несколько сумбурно … Хай щастить! 2015 12 /10 КАТЕГОРИЯ Linux ТЭГИ Debian Web Отправить коммент Отправить коммент RSS комментариев Трэкбэк ( 0 ) Комментов ( 0 ) Комментов пока нет Адрес трэкбэка Трэкбэков пока нет. Нажмите, чтобы отменить ответ. ИМЯ (обязательно) E-mail (обязательно) - не публикуется - URL Знак доллара на клавиатуре (required) Why ask? Leave this anti-spam trap empty Cogito ergo sum! «Існую, оскільки нікому невідомий» RSS фид Облако меток Debian FreeBSD Shell Web Mail Жизнь BackUP CentOS Monitoring WinXP Printer Hardware Firewall Sound OpenBSD Scanner BMW Gentoo VPN Foto DNS Win2k8 AntiVirus AD Win2k3 Последние записи: Купил авто — BMW E46 320D Полезные «однострочники» Debian Jessie: WEB-сервер — ускоряемся … (memcached, xcache) Debian Jessie: Установка и настройка bacula Debian Jessie: Настройка mysql-server (MariaDB Server) Ссылки www.quadro-service.com.ua www.ukrtrip.com www.vitich.kiev.ua Copyright © 2010-2019 diff.org.ua