gpt4 book ai didi

memcached - 我该如何修复我的 S3/memcache 延迟问题?

转载 作者:行者123 更新时间:2023-12-02 07:54:55 25 4
gpt4 key购买 nike

我们的服务器有时会出现严重的延迟问题。

我们将 3 个感兴趣的东西存储在 S3 中,并将它们也放入内存缓存中。

  • 用户头像平均约 25k
  • 文本 ~1.5k
  • xml ~1.5k

截至目前,我们已经为 memcached 专用了 128 兆内存...截至目前,它的容量为 74 兆

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

现在我们有大约 100 个用户头像,可以随时提取我们有数十万个 text/xml 文档,但没有人查看它们就像化身一样......这是一个在这里,在那里类型的东西

有时在一天中用户头像加载速度非常慢(表明它们必须从 s3 加载)和其他时间(当然是在加载之后),您可以看出它们是从 memcached 提供服务的;与文本文档相同

我们在 apache phusion 下使用 REE 运行 merb。我们正在使用基于 libmemcached-0.25.14 构建的 evan weaver 的 memcached gem(我完全理解这不是最新的库;这个 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 下,当它 fork 时共享连接会出现问题,如果我们不关闭我们的连接,它们会继续建立,直到我们用完文件描述符。

我开始更加密切地关注内存缓存,看看是否可以找到我的问题,但有什么建议吗?我们应该摆脱 S3 吗??

最佳答案

如果我没有理解错的话,您是将图像文件存储在由 S3 支持的 memcached 中。

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

  1. 页面加载速度会更快,因为浏览器会从多个域中提取页面组件。

  2. 简化您的架构。

关于memcached - 我该如何修复我的 S3/memcache 延迟问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1446296/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com