Статьи

Я знаю, что использует Facebook — Часть 2

Вступление

В
первой части серии «Я знаю, что использует Facebook» мы говорили о технологии Varnish — высокопроизводительном ускорителе HTTP, который использует язык конфигурации для оптимизации. В этом посте мы обсуждаем одну из технологий, в которой Facebook является крупнейшим пользователем, что называется
memcached . memcached — это система кеширования объектов с распределенной памятью. Что это значит, вы говорите? Вот простое объяснение:

Facebook использует memcached — часть 2

Memcached позволяет заимствовать память из других областей вашей инфраструктуры, где их много, и делает ее доступной в тех областях, где она вам нужна. Без memcached независимые серверы могут обращаться только к той свободной памяти, которая у них есть для них. С помощью memcached серверы получают доступ к пулу доступной памяти. По мере роста потребностей в серверах растет и виртуальный пул памяти, благодаря чему приложения, требующие масштабирования, имеют гораздо больший объем доступной памяти. Если вы хотите прочитать забавную античную точку, объясняющую общий случай использования memcached, посмотрите
TutorialCachingStory . Он описывает, как клиенты memcached работают друг с другом.

Варианты оборудования

Есть несколько опций, которые вы можете использовать для установки memcached. Многие магазины используют выделенные серверы memcached; другие соединяют их с системами, на которых работают веб-серверы — это действительно зависит от того, что вы можете себе позволить Основная идея заключается в том, чтобы по-настоящему понять объемы неиспользуемой памяти на каждом из ваших серверов и аккуратно выделить достаточное количество ее для использования memcached. В моих чтениях также понимается, что не следует чрезмерно выделять память для memcached, поскольку может произойти подкачка. В этом случае ваша производительность будет значительно ухудшена.

Установка memcached

Так же, как и предыдущая технология, которую мы обсуждали, memcached доступен из исходного и двоичного пакетов для основных * nix дистрибутивов. Поскольку memcached — это приложение на C, вам нужно убедиться, что у вас установлена ​​последняя версия GCC и последняя версия libevent при попытке сборки из исходного кода.

Так как Ubuntu / Debian — мой любимый дистрибутив, давайте посмотрим на команду для извлечения memcached:

sudo apt-get install memcached

Зависимость libevent будет установлена ​​вместе с пакетом memcached.

Настройка вашего экземпляра memcached

Чтобы запустить memcached, есть несколько способов сделать это. memcached предлагает несколько параметров командной строки:

  • -m для выделения оперативной памяти
  • -d для daemonizong (запустить его как службу)
  • -v для просмотра STDOUT из приложения 

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

Лучшие практики для memcached Серверов / Клиентов

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

Внимательно обратите внимание на ваши объекты подключения. Они могут быстро закончиться, если не настроены правильно. Просмотрите документацию по конфигурации клиента, чтобы убедиться, что вы знаете, какие вызовы методов или действия создают новые подключения, а какие нет.

Наблюдение за состоянием сервера

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

  • curr_connections: перечисляет количество клиентов, в настоящее время подключенных
  • listen_disabled_num: подсчитывает, сколько раз memcached достиг своего предела соединения
  • Global Hitrate: количество раз, когда ваше приложение находило результаты кеша

Здесь важно помнить, чтобы ваша ОС не использовала своп. Знание этого заранее сохранит работоспособность ваших систем.

Эта серия статей «Я знаю, что использует Facebook» будет продолжаться каждую пятницу, пока нет других технологий, о которых можно поговорить. Настройтесь на следующую неделю для моего последнего взноса!