У нас СЕРЬЕЗНЫЕ ПРОБЛЕМЫ С ИТОГАМИ на нашем сервере.
Мы храним 3 интересных вещи в S3 и помещаем их в memcache.
- Аватары пользователей в среднем ~ 25k
- текст ~ 1.5k
- xml ~ 1.5k
мы выделили 128 мг оперативной памяти для memcached на данный момент ...
на данный момент он проезжает 74 мегабайта
выполняя некоторую базовую математику, мы легко могли бы иметь около 30 000 текстовых документов (с их представлением в формате xml) и 1000 пользовательских аватаров и все еще находиться под нашим 128мег, выделенным для memcache
прямо сейчас у нас есть ~ 100 аватаров пользователей, которые могут быть активированы в любой момент
у нас есть сотни тысяч текстовых / xml документов, но они не просматриваются
как делают аватары ... это один здесь, там типа вещи
иногда в течение дня пользовательские аватары загружаются очень медленно (указывая, что они должны быть загружены из s3), а в другое время (после их загрузки, конечно) вы можете сказать, что они обслуживаются из memcached; то же самое с текстовыми документами
мы запускаем merb под Apache Phusion с REE.
мы используем memcached гем evan weaver, построенный на libmemcached-0.25.14 (который, как я полностью понимаю, не самый современный lib; этот гем требует этого)
Из того, что я вижу, наши проблемы с задержкой связаны с тем, что у 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 ??