Гид по технологиям

Ускорение Apache: mod_pagespeed с Memcached на Ubuntu 16.04

• 4 min read • Оптимизация производительности • Обновлено 28 Nov 2025
mod_pagespeed + Memcached на Ubuntu 16.04
mod_pagespeed + Memcached на Ubuntu 16.04

Введение

Время загрузки страницы влияет на поведение пользователей и ранжирование в поисковых системах. mod_pagespeed — модуль Apache от Google — автоматически оптимизирует ресурсы сайта (сжатие, объединение, оптимизация изображений и пр.) и кеширует результат. По умолчанию модуль использует файловый кеш, но его можно заменить на Memcached — быстрый in-memory кеш-демон — для ещё более низкой латентности.

Опытный администратор увидит прирост производительности особенно на сайтах с большим числом мелких статических и динамически оптимизируемых ресурсов.

Важно: перед изменениями сделайте полную резервную копию конфигурации Apache и файлов сайта.

Требования

  • Сервер с Ubuntu 16.04 (Xenial Xerus).
  • Доступ root или sudo.
  • Установленный Apache 2 (LAMP/Nginx не покрывается в этом гайде).
  • Базовые навыки работы в терминале.

Краткая дефиниция: Memcached — это распределённый открытый кеш в оперативной памяти для ускорения динамических веб-приложений путём уменьшения обращения к базам данных.

Как определить архитектуру системы

Чтобы выбрать корректный пакет mod_pagespeed (32‑ или 64‑бит), выполните:

uname -a

Если в выводе есть “x86_64”, система использует 64‑битное ядро — устанавливайте 64‑битный пакет.

Установка mod_pagespeed

Google предоставляет .deb пакеты для Ubuntu. Для 64‑битных систем выполните:

cd /tmp
wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_amd64.deb
dpkg -i mod-pagespeed-stable_current_amd64.deb

Для 32‑битных систем выполните:

cd /tmp
wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_i386.deb
dpkg -i mod-pagespeed-stable_current_i386.deb

После установки перезапустите Apache:

service apache2 restart

Установка Memcached

Memcached доступен в репозиториях Ubuntu и устанавливается так:

apt-get -y install memcached

Проверить, что Memcached запущен и прослушивает порт:

netstat -tap | grep memcached

По умолчанию Memcached слушает localhost:11211 — этот порт понадобится для настройки mod_pagespeed.

Если вы планируете использовать Memcached и из PHP-приложений, установите расширение:

apt-get -y install php-memcached

Настройка mod_pagespeed для использования Memcached

Откройте конфигурационный файл pagespeed:

nano /etc/apache2/mods-available/pagespeed.conf

Найдите строку, содержащую «ModPagespeedMemcachedServers» и раскомментируйте её, чтобы она выглядела так:

[....]
ModPagespeedMemcachedServers localhost:11211
[....]

Если на сервере достаточно свободной оперативной памяти, можно также включить общий кеш метаданных в разделяемой памяти, раскомментировав строку:

[....]
ModPagespeedCreateSharedMemoryMetadataCache "/var/cache/mod_pagespeed/" 51200
[....]

После правок перезапустите Apache:

service apache2 restart

Теперь mod_pagespeed будет использовать Memcached как бекенд для кеширования оптимизированного контента.

Проверка и отладка

Получить статистику Memcached можно через nc (netcat):

echo stats | nc 127.0.0.1 11211

Пример вывода (пример сервера из тестов):

root@server1:/tmp# echo stats | nc 127.0.0.1 11211
STAT pid 2043
STAT uptime 177
STAT time 1461673050
STAT version 1.4.25 Ubuntu
STAT libevent 2.0.21-stable
STAT pointer_size 64
STAT rusage_user 0.008000
STAT rusage_system 0.036000
STAT curr_connections 11
STAT total_connections 12
STAT connection_structures 12
STAT reserved_fds 20
STAT cmd_get 224
STAT cmd_set 148
STAT cmd_flush 0
STAT cmd_touch 0
STAT get_hits 40
STAT get_misses 184
STAT delete_misses 0
STAT delete_hits 0
STAT incr_misses 0
STAT incr_hits 0
STAT decr_misses 0
STAT decr_hits 0
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT touch_hits 0
STAT touch_misses 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 357876
STAT bytes_written 180755
STAT limit_maxbytes 67108864
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT time_in_listen_disabled_us 0
STAT threads 4
STAT conn_yields 0
STAT hash_power_level 16
STAT hash_bytes 524288
STAT hash_is_expanding 0
STAT malloc_fails 0
STAT bytes 327546
STAT curr_items 127
STAT total_items 148
STAT expired_unfetched 0
STAT evicted_unfetched 0
STAT evictions 0
STAT reclaimed 0
STAT crawler_reclaimed 0
STAT crawler_items_checked 0
STAT lrutail_reflocked 0
END
root@server1:/tmp#

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

Критерии приёмки

  • Страница загружается заметно быстрее по инструментам PageSpeed Insights или DevTools (падение времени загрузки или времени до интерактивности).
  • Нагрузка на CPU и I/O диска снизилась при профилировании сервера.
  • Memcached показывает увеличение get_hits и уменьшение get_misses после прогрева кеша.
  • Нет ошибок в логах Apache, связанных с mod_pagespeed.

Частые проблемы и их устранение

  • Проблема: mod_pagespeed не кеширует ресурсы. Решение: проверьте права на /var/cache/mod_pagespeed, убедитесь, что Memcached слушает 127.0.0.1:11211 и что строка ModPagespeedMemcachedServers не закомментирована.

  • Проблема: Memcached не стартует. Решение: смотрите системный журнал (journalctl или /var/log/syslog), проверьте опции запуска в /etc/default/memcached.

  • Проблема: сайту стало хуже после включения. Решение: временно отключите mod_pagespeed (a2dismod pagespeed && service apache2 restart) и проанализируйте разницу.

Когда это не помогает

  • Очень динамичный сайт с постоянно изменяющимися ресурсами может получить мало выгоды от in-memory кеша.
  • Если узкое место — не диск или CPU, а внешний API, ускорение модулем не даст ожидаемого результата.

Альтернативы и дополнения

  • Varnish как HTTP reverse-proxy для кэширования целых страниц.
  • Redis как альтернатива Memcached, если нужны дополнительные структуры данных и персистентность.
  • CDN (Cloudflare, Fastly, S3+CloudFront) для геораспределённого кеширования статики.

Безопасность и эксплуатация

  • Оставляйте Memcached слушающим только localhost (127.0.0.1) или защищайте его сетевым доступом и firewall — открытый Memcached в публичной сети — риск для безопасности.
  • Мониторьте использование памяти и метрики get_hits/get_misses, чтобы правильно настроить объём памяти для Memcached.
  • Убедитесь, что логирование Apache настроено и изменения можно откатить.

Чек-листы по ролям

Системный администратор:

  • Сделать бэкап конфигураций Apache и файлов сайта.
  • Установить mod_pagespeed и Memcached.
  • Проверить права на кеш и перезапустить сервисы.
  • Настроить firewall, чтобы закрыть порт 11211 извне.

Разработчик:

  • Тестировать приложения на корректность после оптимизаций (клики, AJAX, авторизация).
  • Проверить, что ресурсы корректно минифицируются и не ломают JS/CSS.

QA:

  • Прогреть кеш и сравнить метрики до/после (время загрузки, TTFB, ошибки).
  • Проверить страницы с авторизацией и динамическим контентом на корректность отображения.

Команды‑шпаргалка

# Проверить архитектуру
uname -a

# Установить memcached
apt-get -y install memcached

# Установить php-memcached для PHP
apt-get -y install php-memcached

# Посмотреть, слушает ли memcached
netstat -tap | grep memcached

# Получить статистику memcached
echo stats | nc 127.0.0.1 11211

# Перезапустить apache
service apache2 restart

Модель принятия решения

flowchart TD
  A[Нужна оптимизация загрузки страниц?] --> B{Тип сайта}
  B -->|Статический или кешируемый| C[Использовать CDN + mod_pagespeed + Memcached]
  B -->|Полностью динамический| D[Рассмотреть Varnish/Redis или оптимизацию приложения]
  C --> E[Сделать нагрузочное тестирование]
  D --> E

Ссылки

Краткая сводка

Внедрение mod_pagespeed совместно с Memcached даёт ощутимое улучшение скорости отдачи оптимизированных ресурсов, снижает I/O и повышает ёмкость отдачи страниц в секунду. Начните с тестовой среды, прогрейте кеш и сравните метрики до и после, затем применяйте изменения в продакшне.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро