ХабрПостыНовостиМегапосты?

Умные сессии

Решаем проблемы производительности.

Исходные данные.
Транслируем футбольные матчи через интернет. Посетителей: в обычные дни 5 000 — 10 000, в дни матчей 100 000 — 150 000.

В дата-центре

Проблема
При большом наплыве посетителей происходит перегрузка локальной сети из-за большого количества обращений к мемкешу. Усугублящие факторы: 100Мбит сеть, оба пула на одних и тех же серверах.

Решения

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

В чём суть технологии

  1. Мы не создаём сессию, если она реально не нужна.
  2. Мы не обновляем сессию в хранилище, если она не изменилась.

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


Реализация

Поскольку у нас используется мемкеш, то у нас уже есть объект Session, который перегружает стандартный функционал сессий и позволяет хранить последнии в мемкеше. Дополнительно мы делаем следующее:


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

Коментарии приветствуются.

UPD: Суть поста показать не какой я крутой, а в том, что в ПХП есть мелочи настолько обыденные, что мы перестаём обращать на них внимание, а ведь иногда они не слишком продуманы и оказывают влияние на производительность.
@gnomeby
19.06.2009 04:17 UTC
Первоисточник