войти зарегистрироваться

Zend FrameworkУчим Zend Memcache работать с тегами

В проекте, где я являюсь разработчиком, используется кеш. Сразу хочу оговориться, проект высоконагруженный, порядка двух тысяч человек в сутки. Удобным решением снять нагрузку с базы данных стало использование мемкеша. Поскольку проект на Zend Framework'е реализацию работы кеша соответственно взяли его. Но как выяснилось не самая удачная реализация, поскольку полностью отсутствует работа с тегами, это не дает нам возможности чистить кеш выборочно.

Песочница Ускоряем загрузку страниц сайта, или еще пара способов сжатия JS файлов из песочницы

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


Итак, способ №1 – кеширование содержимого JS файлов с помощью Memcached.


Основное требование к данному способу – установленная на сервере библиотека Memcached.

Веб-разработкаКеширование и теги при использовании ZF + memcached из песочницы

Предисловие


В процессе разработки с использованием связки Zend Framework + Memcached приходится сталкиваться иногда как с (чрезмерной) обильностью имеющегося функционала фреймворка, так и с определёнными ограничениями. Об одном из таких случаев и найденном решении я и попытаюсь рассказать в этой статье.

Описание проблемы

Как известно, Memcached представляет собой относительно простое для использование Key/Value хранилище с простым, необходимым и достаточным функционалом. Предоставляемые ZF интерфейсы для взаимодействия с Memcached включены в общую библиотеку работы с кешем (включает в себя также адаптеры для Sqlite, Xcache, ZendServer и т.д.). Некоторые из этих систем кеширования поддерживают использование тегов для объектов кеширования, однако Memcached такой функцией не обладает, поэтому попытки использовать стандартные интерфейсы классов ZF для кеширования объектов с указанием тегов при работе с Memcached приведут лишь к ошибкам (в логах) вплоть до исключений. (Подробнее можно прочитать в документации).

Системное администрированиеТрудности администрирования гостевых хотспотов. Практика (часть 2)

В предыдущей статье я рассказал о том, как отследить состояние isc-dhcpd, теперь о практических методах применения данной схемы.

При работе в высоко нагруженных гостевых Wi-Fi сетях возникает проблема отслеживания и добавления клиентов, которые имеют расширенный доступ к внешним сервисам. Самый лучший вариант это контроль доступа по MAC адресам (занесение связки адресов в dhcpd.conf), но как показывает практика он достаточно неудобен, т.к. Вы реально не можете контролировать состояние уже занесенных в конфиг хостов и их работу.

Системное администрированиеТрудности администрирования гостевых хотспотов (часть 1)

В этой небольшой статье я расскажу как снять с себя головную боль по администрированию больших подсетей завязанных на раздачу интернета приходящим пользователям.
Основные инструменты:
  • Голова
  • Еще раз голова
  • Руки
  • FreeBSD
  • PF
  • isc-dhcpd
  • memcached
  • perl

Желающие узнать про всё написанное под кат, остальным хорошего просмотра остальных топиков.
Ссылка на вторую часть

Облачные вычисленияНебольшой обзор Amazon ElastiCache — нужен ли он типичному веб-проекту?

22 августа Amazon анонсировал новый сервис в AWS — Amazon ElastiCache. На Хабре об этом тоже написали.

Сервис совмести по протоколу с Memcached.

Посмотрим, как он работает и имеет ли практическую ценность для веб-разработчиков и системных администраторов.

Облачные вычисленияAmazon ElastiCache: реализация Memcached в облаке AWS

Началось публичное бета-тестирование Amazon ElastiCache — нового веб-сервиса, который облегчает развёртывание, управление и масштабирование кэширующих узлов и кластеров в облаке. Сервис повышает производительность веб-приложений за счёт доступа к быстрому кэшу в оперативной памяти, вместо медленных дисковых СУБД, сообщается на офсайте.

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

Веб-разработкаПростой дополнительный контроль состояния данных memcached

image Мониторинг memcached — дело далеко не последней важности. Как на этапе тестирования, так и на этапе сопровождения уже работающего нагруженного ресурса. Средств «из коробки» для этого не так уж и много, а если вы работает с PHP, то зачастую ограничиваетесь средствами memcache (или memcached), а именно

Memcache::getStats()

$memcache = new Memcache;
$memcache->connect('localhost',11211);
print_r($memcache->getStats());


что возвращает типичный набор данных

Array ( [pid] => 25722 [uptime] => 4487286 [time] => 1308323074 [version] => 1.2.2 [pointer_size] => 64 [rusage_user] => 2646.005365 [rusage_system] => 17108.873237 [curr_items] => 37761 [total_items] => 10764857 [bytes] => 140070186 [curr_connections] => 5 [total_connections] => 17360659 [connection_structures] => 31 [cmd_get] => 89154830 [cmd_set] => 10764857 [get_hits] => 83452021 [get_misses] => 5702809 [evictions] => 0 [bytes_read] => 3527860756618 [bytes_written] => 4234517241183 [limit_maxbytes] => 2147483648 [threads] => 1 )

Вроде всё хорошо.
Мы видим, что у нас занято 133,5 Mb из 2 Gb выделенных под memcached и около 37 тыс. ключей.
Hits к misses относиться как 83/5, что тоже не внушает опасений.

PHPDoS сервера при хранении сессий в Memcached простым запросом с Cookie

Здравствуйте,

При рефакторинге нашего фреймворка случайно послали SID превышающий разрешенный размер. Скрипт задумался, надолго. Профилирование показало что выполнение функции session_start заняло 30 секунд. Трейс процесса показал, что скрипт висит в цикле ровно max_execution_time установленный в настройках PHP, дальше возвращает -1 и процесс продолжает работу без ексепшенов и ошибок. Дальнейшее копание привело к PECL модулю Memcached, а тот уже показал что нет проверки SID на длину и спец. символы.

Веб-разработкаУмное удаление кеша (php 5 + Mongodb + memcached) из песочницы

Предисловие


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

Для себя я решил кешировать только результаты запросов к бд, т.к., имхо, загружать кеш огромными (или не очень) html блоками — в некотором роде расточительство ресурсов. (Это утверждение скорее всего справедливо только если вы не используете шаблонизатор). Ну и конечно же в качестве службы кеширования использую всем известный memcached.
Теперь давайте посмотрим — какие проблемы нас ждут при таком кешировании.
А проблема то всего одна, но зато не самая лицеприятная — поддерживание кеша всегда в актуальном состоянии.

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