当前位置:  开发笔记 > 数据库 > 正文

如何修复S3/memcache延迟问题?

如何解决《如何修复S3/memcache延迟问题?》经验,为你挑选了1个好方法。

我们的服务器上有严重的延迟问题.

我们在S3中存储了3个感兴趣的东西,并将它们存入memcache.

用户头像平均约为25k

文字~1.5k

xml~1.5k

到目前为止,我们已经为memcached提供了128meg的ram ......截至目前它正在使用74兆的内存

做一些基本的数学我们应该能够轻松地拥有大约30,000个文本文档(使用它们的xml表示)和1,000个用户头像,并且仍然在我们的128meg专用于memcache

现在我们有大约100个用户头像可以在我们拥有的数十万个文本/ xml文档中的任何给定时间被提取但是它们不会像头像一样被查看...它就是这里的一个,在那里类型事情

有时白天用户头像加载速度超慢(表示必须从s3加载)和其他时间(当然加载后),你可以告诉他们是从memcached提供的; 与文本文件相同的东西

我们在REE的apache下运行merb.我们正在使用基于libmemcached-0.25.14构建的evan weaver的memcached gem(我完全理解它不是最新的lib;这个gem需要它)

从我所看到的我们的延迟问题是因为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中,当它分叉时会有共享连接的问题,如果我们没有关闭我们的连接,它们会一直存在,直到我们用完文件描述符.

我开始密切关注内存缓存,看看我是否可以追踪我的问题,但有任何建议吗?我们应该摆脱S3 ??



1> Mike Buckbee..:

如果我理解正确,那么您将图像文件存储在S3支持的memcached中.

为什么不直接从S3引用图像,而是在它们上设置Expires HTTP标头,以便客户端不会每次都拉它们,这有两个好处:

    随着浏览器从多个域中提取页面组件,页面的加载速度会更快.

    简化您的架构.

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有