ИНОГДА на нашем сервере возникают СЕРЬЕЗНЫЕ проблемы с задержкой.
Мы храним 3 интересующие вещи в S3 и также запихиваем их в memcache.
- В среднем около 25 000 аватаров пользователей
- текст ~1.5k
- xml ~ 1,5 КБ
на данный момент мы выделили 128 мегабайт оперативной памяти для memcached... на данный момент он использует 74 мегабайта
проделав некоторые базовые математические вычисления, мы легко сможем иметь около 30 000 текстовых документов (с их представлением в формате xml) и 1000 пользовательских аватаров, и при этом у нас будет меньше 128 мегабайт, выделенных для memcache.
прямо сейчас у нас есть ~ 100 пользовательских аватаров, которые можно открыть в любой момент времени, которые у нас есть в сотнях тысяч текстовых / xml-документов, но они не просматриваются, как это делают аватары ... это один здесь, там тип вещи
иногда в течение дня аватары пользователей загружаются очень медленно (что указывает на то, что они должны быть загружены из s3), а иногда (конечно, после загрузки) вы можете сказать, что они обслуживаются из memcached; то же самое с текстовыми документами
мы запускаем merb под apache phusion с REE. мы используем драгоценный камень memcached Эвана Уивера, построенный на libmemcached-0.25.14 (который, как я полностью понимаю, не является самой современной библиотекой; этот драгоценный камень требует этого)
Из того, что я вижу, наши проблемы с задержкой связаны с S3, у которого есть серьезные проблемы с задержкой (иногда 500 мс для одного аватара). Тем не менее, кажется, что это не должно быть проблемой, учитывая, что он должен кэшироваться все время. Срок действия кэша по умолчанию установлен на 1 неделю.
Соответствующий код:
@cache = MMCACHE.clone
begin
picture = @cache.get("/avatars/#{user.avatar}")
rescue
picture = user.picture
@cache.set("/avatars/#{user.avatar}", picture)
end
@cache.quit
клонирование/выход важно, так как при apache/phusion будут проблемы с совместным использованием соединений, когда он разветвляется, и если мы не закроем наши соединения, они будут продолжать создаваться, пока у нас не закончатся файловые дескрипторы.
Я начинаю гораздо более внимательно следить за memcache, чтобы увидеть, смогу ли я отследить свои проблемы, но есть предложения ?? Должны ли мы просто избавиться от S3??