Pull to refresh
  • by relevance
  • by date
  • by rating

На чём работает digg

MySQL *
Мы уже рассказывали, на чём работает MySpace и как устроены дата-центры Google, а теперь посмотрим на более мелкие проекты, такие как digg. Здесь нет ничего особо уникального и сделанного «по спецзаказу», как в первых двух случаях, но всё равно интересно.

В момент запуска проект размещался на единственном Linux-сервере с Apache 1.3 и PHP 4.x. Для управления базами данных использовались MySQL 4.0, таблицы MyISAM и встроенный поиск MySQL. Разработчики специально старались использовать как можно больше продуктов open source, чтобы гарантировать быстрое развитие проекта без финансовых затруднений. Кроме вышеперечисленных, нашли применение свободные пакеты ImageMagick, Ispell, prototype/scriptaculous и другие. Вскоре к одному серверу добавился другой и начался бурный рост проекта.
Читать дальше →
Total votes 64: ↑63 and ↓1 +62
Views 1.4K
Comments 21

Что такое memcached и для чего он нужен

Lumber room
Memcached (читается мемкЭшид) — это система кэширования различных объектов в оперативной памяти. Позволят значительно снизить нагрузку на базу или файловую систему и ускорить работу сайта, за счет того, что работа с памятью быстрее чем с базой или файлами. Насколько я помню была разработана для LJ, а сейчас применяется практически на всех проектах с большим количеством пользователей. Запускается отдельным сервером.

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

Для PHP есть специальный PECL-модуль (то есть он не поставляется вместе с PHP, надо отдельно скачивать и компилировать). Думаю также есть готовые модули для Perl, Python (Django), Ruby(RoR) и других языков.

В API самого мемкеша есть только базовые функции: выбор сервера, коннект и дисконект, добавление, удаление, обновление и получение объекта, инкримент и дикримент. Для каждого объекта устанвливается время жизни, от 1 секунды до бесконечности. При переполнение памяти более старые объекты автоматически удаляются. Для PHP также есть уже готовые библиотеки для работы с мемкешем, которые дают дополнительную функциональность.

Базовый алгоритм работы с мемкешем следующий — обращается к мемкеш-серверу за объектом, если он есть то берем его. Если нет, то обращаемся к базе данных (или где там еще у вас могут хранится данные), формируем объект, выдаем его пользователю и добавляем в мемкеш, чтобы мы могли прочитать его при следующем обращение.

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

Сейчас на одном из своих проектов (сайт знакомств) я пробую использовать мемкеш для реализации показа статуса пользователя он- или оффлайн..
Total votes 15: ↑9 and ↓6 +3
Views 7.3K
Comments 12

3-я встреча Moscow MUG: MySQL и memcached

MySQL *
1-го ноября, в 19-00 в аудитории 116 здания ГУ-ВШЭ на Мясницкой, 20 состоится очередная встреча Moscow MySQL User Group. В качестве ведущего выступит Михаил Монашёв.

Михаил расскажет, как он с коллегами использует MySQL с мемкешедом в проекте beon.ru.

Если Вы никогда ранее не работали с мемкешедом, то узнаете что это за зверь и как с его помощью ускорить работу с MySQL-ем.

Если уже используете его в своих проектах, то возможно узнаете, как это можно делать оптимальнее.

Встреча проводится при поддержке клуба «Бизнес в стиле .RU» и для участия в ней необходимо обязательно зарегистрироваться по адресу styleru.net/register, чтобы попасть в здание ГУ-ВШЭ.
Total votes 4: ↑3 and ↓1 +2
Views 782
Comments 2

Facebook открывает новые дата-центры

MySQL *
Тысячи серверов в собственных дата-центрах Facebook с трудом выдерживают нагрузку. Каждую неделю на сайте регистрируется почти два миллиона новых пользователей вдобавок к имеющимся десяткам миллионов. Все они проводят на сайте в среднем по нескольку часов и загружают сотни страниц в день, что создаёт немалые проблемы для инженеров. Один из программистов Facebook рассказывает в корпоративном блоге, с чем приходится иметь дело.

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

Впрочем, инженеры Facebook эту ситуацию предвидели заранее и уже давно начали обустройство нового дата-центра в Вирджинии, который сейчас введён в строй. Судя по всему, это далеко не последний дата-центр компании Facebook.
Читать дальше →
Total votes 25: ↑24 and ↓1 +23
Views 887
Comments 28

Cache:: Memcached:: Fast 0.08

Perl *
Сегодня зарелизили версию перлового клиента для memcached близкую к окончательной. Багов не замечено. Работает на боевых серверах beon.ru. По бенчам превосходит по скорости все аналогичные модули (как пишут в рекламе, «до десяти раз быстрее»)

wiki проекта

Приятно, когда коммерческие проекты выкладывают хорошую работу в open source!
Total votes 24: ↑21 and ↓3 +18
Views 1.6K
Comments 8

Борьба с фрагментацией PHP кешеров

Website development *
Я надеюсь, что нормальные люди уже прониклись необходимостью кешировать вывод данных на своих сайтах, либо кэшировать промежуточные результаты работы с базой данных, либо просто кешировать opcode скриптов для их более быстрого выполнения.
И что разработчики предоставляют нам для этого дела?
Читать дальше →
Total votes 32: ↑28 and ↓4 +24
Views 3.5K
Comments 43

Установка и настройка Django на «боевом» сервере с CentOS 5

Django *
Я делаю на Django Энциклопедию языков программирования, о которой уже писал на Хабре. За время работы сайта выяснилось, что нужен свой выделенный сервер для большей производительности и стабильности. Пока что взял дешевый сервер с 1.8 ГГц процессором и 512 Мб памяти.

В этой статье я расскажу об установке и настройке на этом сервере Django с mod_python для Apache, с кэшированием memcached и lighttpd для статических файлов.
Читать дальше →
Total votes 23: ↑18 and ↓5 +13
Views 11K
Comments 14

На Facebook уже 10 000 серверов

MySQL *
Инфраструктура крупнейшей социальной сети продолжает расти в геометрической прогрессии. На днях технический директор Facebook на конференции по MySQL огласил (видео) свежие данные: оказывается, на проект сейчас работает уже 10 000 серверов, в том числе 1 900 серверов MySQL, а обслуживают их всего два администратора баз данных.

В отличие от Google, Yahoo и Microsoft, компания Facebook не строит свои собственные дата-центры, а арендует чужие новостройки по мере необходимости. Совсем недавно к числу арендуемых добавились два новых дата-центра: в Вирджинии (октябрь 2007) и Калифорнии (февраль 2008).

Теперь становится понятно, почему IBM позиционирует новые серверы iDataPlex специально для Веб 2.0, ведь на них действительно есть спрос со стороны тех же Facebook, Yahoo, Microsoft и Amazon.

Технический директор также рассказал, что Facebook по-прежнему активно использует систему кэширования Memcached для оптимизации работы динамических веб-приложений. На сегодняшний день это самый крупный проект в мире на базе Memcached (805 серверов).

Total votes 43: ↑42 and ↓1 +41
Views 4.6K
Comments 42

PHP: Изменение файлового кеширования на memcached — впечатления

Lumber room
Почти всегда на крупных проектах, особенно сообществах, приходится очень много кешировать данные, такие, как количество сообщений, данные пользователя, общая информация…

На наших проектах мы уже несколько лет использовали файловое кеширование. Т.е., данные каждого пользователя заносились в файл, и по мере надобности изменялись. Проблема нагрузки была всегда, особенно на БД Mysql.

Изменили файловое кеширование на кеширование Memcached. Результаты просто потрясающие. Нагрузка сошла на нет, очередь коннектов к базе данных ушла. Сайты начали работать в разы быстрее.

Почему нагрузка на Mysql уменьшилась? Мое мнение — уменьшилось количество запросов на чтение и запись на жесткий диск, от этого разгрузился Mysql. Скорость работы диска, как и загруженность диска запросами на чтение-запись, как известно, одни из параметров, которые влияют на производительность Mysql.

UPD:

Что было:
1. Около 250 000 файлов кеша.
2. Около 2ГБ занято под кеш.
3. Около ~ 30 запросов/секунду (в пике ~ 50) на чтение-запись кеша с диска.

Что стало:
1. 0 файлов кеша
2. 400 МГ выделено под memcached (срок хранения данных в кеше — неделя)
3. 0 запросов на чтение-запись кеша.
Total votes 19: ↑14 and ↓5 +9
Views 425
Comments 22

По итогам СПИКа — отчет по секциям о cms

Lumber room
Шестого июня в отеле «Ольгино», что в пригороде славного города Санкт-Петербурга, проходила Санкт-Петербургская ИНТЕРНЕТ КОНФЕРЕНЦИЯ.
Что тут сказать, наш город не часто посещают акулы рунета, так что решение о походе на данное мероприятие было принято моментально.

Уже въезжая а стоянку в отеле был приятно удивлен бесплатной парковке, так как на сайте все таки было написано что придется заплатить 200 деревянных… ну что, подходил ко входу с улыбкой на лице :)
Читать дальше →
Total votes 4: ↑2 and ↓2 0
Views 289
Comments 2

PHP: Уменьшаем исходящий трафик (или изобретаем очередной велосипед)

Lumber room
В связи с разработкой мобильной версии сайта столкнулся с проблемой — передается много данных, как следствие на мобильном телефоне тратится много денег, было решено написать несколько функций предназначенных для уменьшения передаваемых данных
Читать дальше →
Total votes 1: ↑5.5 and ↓-4.5 +10
Views 500
Comments 27

nginx, memcached и SSI

Website development *
Моя первая статья, не судите строго...

Приветствую вас, уважаемые хабрадевелоперы!

Многие из вас знают о прекрасном легковесном веб-сервере nginx.
Некоторые также знают, что он умеет работать с memcached.
Но лишь немногие в курсе, при чём здесь SSI и как его можно использовать в связке с nginx и memcached.

Как известно, новое — это хорошо забытое старое. Каждый названный инструмент и технология вам наверняка известны. Я же хочу рассказать о том, как и зачем свалить всё это в одну кучу :)
Читать дальше →
Total votes 4: ↑3 and ↓1 +2
Views 16K
Comments 93

PHP Performance Series: Caching Techniques

PHP *
Translation
Кеширование промежуточного кода (Opcode Caching)
Кэширование кода это один из самых легких и эффективных путей увеличения производительности в PHP. Использовании данного вида кэширования позволит избавиться от большого количества неэффективностей, возникающих при процессе запуска выполнения кода. Кэширование кода сохраняет промежуточный код в памяти для того чтобы не компилировать PHP-код каждый раз при запуске файла.
Читать дальше →
Total votes 59: ↑50 and ↓9 +41
Views 8.8K
Comments 66

Польза кеширования данных. Пример из реальной практики.

Website development *
С появлением и развитием memcached-подобных систем в архитектурах веб-приложений появилось еще одно звено, а именно кеш-серверы. Обычно это машины с большим объемом оперативной памяти, в которой хранятся заранее подготовленные данные. Это могут быть результаты сложных запросов к БД или же отрендеренные динамические части страниц сайта. На самом деле, кеш, как и любая другая система, может использоваться как угодно, чтобы удовлетворить нужды приложения.

Суть кеширования проста.
Total votes 53: ↑43.5 and ↓9.5 +34
Views 3K
Comments 90

Особенности хранения сессий PHP в memcached

PHP *
Данная статья рассматривает одну из проблем хранения PHP-сессий в memcached: отсутствие их блокировки.

Введение

Ни для кого не секрет, что одним из самых популярных способов повышения производительности сайта является использование memcached. Об этом неоднократно говорили и приводили многочисленные примеры. Самый простой способ сделать это — использовать memcached для хранения сессий PHP. Для этого нет необходимости переписывать весь код, достаточно нескольких простых действий. Я не буду рассказывать, почему надо хранить сессии в memcached. Я расскажу о том, почему хранение сессий в memcached опасно.
Читать дальше →
Total votes 75: ↑66 and ↓9 +57
Views 30K
Comments 75

MemcacheDB и MemcacheQ — ключевые компоненты высокопроизводительной инфраструктуры

High performance *
Cегодня мы поговорим о компонентах для высокопроизводительной и масштабируемой архитектуре на основе сервера memcached, а именно — распределённой базе для хранения данных MemcacheDB и системы очередей сообщений MemcacheQ.



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

Читать дальше →
Total votes 50: ↑50 and ↓0 +50
Views 6.9K
Comments 23

Кэширование и memcached

Website development *

Этим постом хочу открыть небольшую серию постов по материалам доклада на HighLoad++-2008. Впоследствии весь текст будет опубликован в виде одной большой PDF-ки.



Введение


Для начала, о названии серии постов: посты будут и о кэшировании в Web’е (в высоконагруженных Web-проектах), и о применении memcached для кэширования, и о других применениях memcached в Web-проектах. То есть все три составляющие названия в различных комбинациях будут освещены в этой серии постов.
Читать дальше →
Total votes 76: ↑75 and ↓1 +74
Views 66K
Comments 72

Кластеризация memcached и выбор ключа кэширования

Website development *
Серия постов под общим заглавием “Web, кэширование и memcached” продолжается. В первом мы поговорили о memcached, его архитектуре и возможном применении.

Сегодня речь пойдет о:
  • выборе ключа кэширования;
  • кластеризации memcached и алгоритмах распределения ключей.

Следующий пост будет посвящен атомарности операций и счетчикам в memcached.

Итак, поехали!
Total votes 61: ↑61 and ↓0 +61
Views 19K
Comments 42