Установка кэша на vps

Обновлено: 04.07.2024

memcached — программное обеспечение, с помощью которого происходит временное кэширование в оперативной памяти сервера. Оно позволяет ощутимо ускорить работоспособность сайта.

Чтобы установить memcached, выберите вашу ОС:

Перед установкой обновите репозиторий: apt-get update && apt-get upgrade Установите memcached с помощью команды: apt-get install memcached Перезапустите веб-сервер с помощью команды: service apache2 restart

На данном этапе установка завершена. Чтобы проверить, запущен ли memcached, введите команду: netstat -tap | grep memcached

Терминал выдаст результат с запущенным процессом memcached

Обновите пакеты и репозитории с помощью команды: yum update Установите memcached с помощью команды: yum install memcached Добавьте memcached в автозагрузку: chkconfig memcached on

Установка memcached завершена. Чтобы проверить, включен ли memcached, введите команду: netstat -tap | grep memcached

Терминал выдаст результат с запущенным процессом memcached

VPS с установленной CentOS

Закажите сервер с чистой CentOS или панелью управления ISPmanager всего за пару минут.

Для установки расширения memcached на PHP:

В разделе Настройки web-сервера выберите пункт PHP:


Выберите нужную версию PHP и нажмите кнопку Расширения:


В списке доступных расширений найдите memcache. Чтобы включить его, нажмите на иконку Лампочка:


Memcached на CMS

Если вы используете CMS для вашего сайта (WordPress, Joomla, Bitrix, Drupal), для корректной работы кэширования необходимо добавить и настроить плагин memcached.

Для WordPress: WP-FFPC

Для Joomla 3: В разделе Общие настройки на вкладке Система выберите Обработчик кэширования Memcache.

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

  • Увеличение числа посетителей. Вполне естественный фактор для любого коммерческого или информационного проекта, нацеленного на расширение аудитории.
  • Проблемы с оптимизацией программного обеспечения. Для максимальной производительности все службы, сервисы и утилиты должны быть настроены соответствующим образом, в противном случае доступные ресурсы будут расходоваться впустую.
  • Действия злоумышленников. Спам-боты, сканеры портов и даже такое, с первого взгляда, безобидное явление, как хотлинкинг - все это заметно сказывается на работе VPS сервера. Также резкое падение производительности может оказаться признаком DDoS-атаки.

Виртуальный сервер Timeweb

Бороться с первыми двумя мы и научимся в данной статье. Но для начала разберемся, каким образом можно выявить причины медленной работы.

Мониторинг VDS

Скачок посещаемости наглядно продемонстрирует Яндекс.Метрика, скрипт которой интегрируется непосредственно в движок сайта. Этот абсолютно бесплатный инструмент позволяет узнать:

Все перечисленное поможет оценить динамику роста аудитории, сопоставив ее с возникшими перебоями в работе виртуального сервера. Тем более что Яндекс будет отсылать вам уведомления в том случае, если сайт окажется недоступен, - это свидетельствует о том, что нагрузка на VDS достигла критических значений.

Для мониторинга же самого сервера наиболее оптимальным решением можно назвать утилиту atop - небольшую программу, позволяющую отслеживать в реальном времени исполняемые процессы и сетевую активность, а также вести лог событий. Устанавливается она командой:

Для ее запуска достаточно ввести:

Вывод atop разделен на две половины. В верхней секции можно увидеть основную информацию по системе (загруженность памяти, процессора, диска), ниже приводится сводка по каждому процессу. Утилита поддерживает горячие клавиши, что существенно упрощает ее использование:

  • c - распределение процессов по степени нагрузки на ЦП;
  • m - ранжирование по интенсивности расходования памяти;
  • d - сортировка по нагрузке на диск;
  • v - расширенная информация по запущенным процессам (дата и время начала, имя пользователя);
  • u - ранжирование по пользователям, больше всего нагружающим сервер;
  • i, затем указать время в секундах и нажать Enter - позволяет изменить время обновления таблиц (по умолчанию 10 секунд);
  • g - сброс настроек к настройкам по умолчанию.

Программа ведет запись собранных данных. Ознакомиться с выводом можно, введя команду:

Здесь применимы флаги C, M и D, функция которых аналогична соответствующим горячим клавишам. Например, введя:

мы отсортируем процессы по степени использования RAM.

Возможности atop позволяют с высокой точностью определить причину падения производительности. Как показывает практика, в большинстве проблемы вызывают неправильные настройки кэширования, интерпретатора PHP или отсутствие оптимизации баз данных. Давайте разберемся, как их устранить.

Настройка кэширования

В случае заметного роста посещаемости грамотная настройка кэширования поможет значительно снизить нагрузку на VDS. Рассмотрим решения для Apache и Nginx.

Директивы, управляющие кэшем в Apache, можно прописывать как в файл виртуального хоста, так и в .htaccess корневого каталога вашего проекта. Наиболее простой способ - использование FilesMatch:

Выше мы задали кэширование всего статического контента, включая мультимедиа и документы.

Параметр max-age позволяет указать время хранения в секундах (в данном примере он равен 30 дням).
Больше возможностей предоставляет модуль Expires. Для его активации необходимо сделать следующее:

В числе преимуществ - возможность точно задать время хранения (запись вида “1 месяц, 3 дня, 2 часа”) и выбрать способ кэширования файла (с момента первого чтения, или модификации). Приведем наглядный пример:

Задаем кэширование по умолчанию для всех файлов:

GIF будут хранится в течение 1,5 месяцев, 3 часов и 10 минут с момента доступа:

Картинки JPEG будут сохраняться 2 месяца после последнего изменения:

Обратите внимание: необходимо указывать полные MIME-types файлов, в формате “тип данных/расширение” (image/png, text/css и т.д.).

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

Перечисляем расширения файлов, которые нужно кэшировать:

Указываем путь к корневой папке сайта:

Собственно настройками кэширования можно управлять, создав в директории /etc/nginx/conf.d/ файл cache.conf со следующим содержанием.

Указываем директорию кэша:

Задаем уровень вложенности папок (1:2:3:4 и т.д.):

Определяем базовый размер кэша (Мб):

Указываем время, после которого кэш удаляется, если не было повторных запросов к файлам (в минутах):

Задаем максимальный размер кэшируемых данных (Мб):

Указываем количество обращений, после которых файл попадает в кэш:

После этого убедитесь, что в главном конфигурационном файле nginx.conf имеется следующая строчка:

В случае отсутствия таковой пропишите директиву самостоятельно. Чтобы активировать настройки, перезапустите сервер:

Оптимизация веб-сервера

Одна из наиболее типичных ошибок, допускаемых пользователями, - эксплуатация связки LAMP даже в тех случаях, когда этого объективно не требуется. Хотя Apache является весьма популярным и многофункциональным решением для размещения блога или сайта-визитки, его возможности оказываются избыточными. Сам сервер слишком тяжеловесен и потребляет значительные ресурсы. Отсюда радикальный способ снижения нагрузки на VDS - это миграция на более быстрый и оптимизированный Nginx. Если же для нужд проекта требуется именно Apache, Nginx можно установить в качестве фронт-энда, отведя роль прокси-кэш сервера, что также значительно увеличит производительность. Делается это следующим образом:

1. Устанавливаем Nginx:

2. Удаляем дефолтные настройки:

4. Копируем в файл следующие настройки:

В примере выше мы указали, что все статическое содержимое (изображения, видео, документы) будет кэшироваться и отдаваться пользователю Nginx, на Apache же пойдут только запросы, требующие подключения динамики.

1. Применяем изменения:

2. Меняем порты Apache:

Здесь необходимо скорректировать следующие строчки:

Аналогичная замена осуществляется в конфигурационном файле виртуального хоста:

После чего Апач необходимо перезапустить:

Настройка PHP

Производительность динамических сайтов можно существенно увеличить, поработав с PHP. Его настройки находятся в файле /etc/php5/apache2/php.ini, если интерпретатор является модулем Apache, либо /etc/php5/fpm/php.ini (для PHP-fpm в связке с Nginx). Многие из них определяются спецификой скриптов, используемых CMS, но есть и несколько, о которых попросту забывают. Тем не менее даже пара строчек способна заметно снизить нагрузку на VDS. Обратить внимание стоит на следующие директивы:

Ее включение требуется лишь в том случае, если вам необходимо отслеживать нагрузку, создаваемую входящим POST-запросом. Отключение позволит разгрузить оперативную память.

Активная буферизация позволит отдавать данные крупными фрагментами, существенно снизив время отклика. В противном случае, сервер будет реагировать на каждую инструкцию echo/print.

Этот блок лучше закомментировать целиком - директива необходима лишь при использовании суперглобальных переменных и не требуется для функционирования большинства движков.

Необходимо вручную задать часовой пояс по умолчанию. Если этого не сделать, PHP будет регулярно посылать дополнительные системные запросы для его определения.

После изменения настроек, не забудьте перезапустить Apache:

либо службу самого интерпретатора (в случае с Nginx):

Если на сервере используется PHP версии 5.3 и выше, стоит воспользоваться акселератором скриптов Zend Opcache. Его установка не составляет особого труда:

Для загрузки модуля в файл php.ini необходимо добавить строки:

Обращаем ваше внимание: начиная с версии PHP 5.5, компонент Zend Opcache уже включен по умолчанию.

Что касается настроек - их следует подбирать, исходя из специфики размещаемых проектов и мощности сервера. Однако даже минимальная рекомендуемая конфигурация поможет ускорить обработку скриптов. Выглядит она следующим образом.

Размер потребляемой памяти для прекомпилируемого кода (Мб):

Объем памяти для пула строк (Мб):

Максимальное число скриптов в хэш-таблице (от 200 до 1000000):

Периодичность проверки актуальности данных (в секундах):

Поддержка PHP CLI, которая используется для отладки, как правило, не нужна:

Директивы также вносятся в php.ini после блока активации модуля. Затем следует перезапустить Apache или сам PHP-fpm:

Оптимизация баз данных MySQL

Теперь скрипт необходимо запустить с помощью команды:

Это позволит получить исчерпывающие сведения о состоянии MySQL, которые будут записаны в текстовый файл /tmp/result_mysqltuner.txt (вы можете задать любое имя и местоположение для отчета). Стоит учитывать, что скрипт пригоден для сканирования продакшн-сервера, проработавшего без перерыва не менее 24 часов, в противном случае информация может быть недостоверной.

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

В данной статье рассмотрен процесс установки memcached для кэширования на VDS с Debian или Ubuntu, а так же установка расширений для работы с memcached для php и python.

Все действия в консоли сервера в рамках данной статьи производятся от имени суперпользователя root.

Устанавливаем и настраиваем memcached

В консоли сервера нужно выполнить команды:

С этого момента memcached на сервере установлен и запущен. По-умолчанию он запускается с 64 мб памяти и доступен по адресу 127.0.0.1:11211 . Если вы хотите изменить настройки по умолчанию, необходимо внести правки в файл /etc/memcached.conf , после чего перезапустить memcached:

Например, вы можете захотеть предоставить memcached больше или меньше памяти для хранения кэша, за что отвечает опция -m , запустить его на другом ip-адресе (например чтобы сделать его доступным с других серверов), за что отвечает опция -l и так далее.

Обратите внимание, что в memcached не предусмотрено никакого механизма разграничения прав доступа, поэтому если вы хотите, чтобы memcached был доступен извне с других хостов, не забудьте ограничить перечень ip адресов, с которых он будет доступен, с помощью firewall.

Устанавливаем расширение для memcached в php

В php5 есть два расширения для работы с memcached: php5-memcache и php5-memcached. У второго расширения несколько более обширный API и больше предоставляемых возможностей. Кроме того, расширение php5-memcached использует для работы библиотеку libmemcached, в то время как расширение php5-memcache использует собственную реализацию взаимодействия с демоном memcached.

Установить можно как любое из этих расширений по отдельности, так и оба вместе. Достаточно просто:

У php5-memcache есть несколько доступных для настройки опций, редактирование которых осуществляется в файле /etc/php5/mods-available/memcache.ini .

После установки любого из этих расширений для вступления в силу новой конфигурации php необходимо перезапустить веб-сервер:

Устанавливаем расширение для memcached в python

Как и в случае с php, в python есть два доступных расширения для работы с memcached: python-memcache , полностью написанное на python и, вероятно, более медленное, а так же python-pylibmc , использующее libmemcached для взаимодействия с memcached. Точно так же установлены могут быть оба расширения одновременно, либо любое из них по отдельности. Устанавливаются они с помощью команд:

Кеширование это своеобразный обмен заголовками, благодаря которому сервер сообщает клиенту 1) что определенный элемент сайта можно закешировать на некоторое время. После чего, при последующих запросах этого элемента, браузер будет считывать данные из кеша.

Сжатие это технология архивации 2) , которая позволяет сжимать данные на сервере и распаковывать их после получения на клиенте 3) . С помощью сжатия, осуществляется уменьшается трафик и, соответственно, время загрузки контента. Но, при этом, незначительно возрастает нагрузка на центральный процессор при распаковке данных.

Настройка Apache

Для включения кеширования и gzip-сжатие необходим модуль mod_deflate, для кеширования - mod_headers или mod_expires. Для включения этих модулей в консоли из под root-доступа выполните команды:

Следующие команды необходимы для отключения модулей:

Директивы для файлов apache2.conf или .htaccess

Данные директивы, могут быть записаны в .htaccess 4) или в конфигурационный файл apache2.conf 5) :

Debian, Ubuntu (apache 2.2) /etc/apache2/apache2.conf

Настройка кэширования с помощью nginx

Для ускорения выдачи статического контента сайта используется кэширование с помощью nginx. Как правило, кеширование необходимо для сайта контент которого не меняется в зависимости от пользователя (авторизован или гость) и нет активно меняющихся данных (например голосований). Это важно, т.к. активно изменяющийся контент требует индивидуального подхода и зачастую сложных схем кеширования.

В конфигурационном файле nginx.conf 6) , в секции server необходимо добавить следующий location 7) :

Далее, для браузеров которые поддерживают сжатие при получении несжатого контента - css, js, ico, , имеет смысл добавить 8) следующую запись:

Работать эта конструкция будет только при наличии установленного модуля gzip_static в nginx.

Далее, чтобы не закешировать лишнее у всего остального контента необходимо запретить кеширование, для этого в начале секции server вставляем:

Теперь даже если данные закешируются, браузер все равно будет их запрашивать т.к. дата просрочена.

Читайте также: