【发布时间】:2013-05-26 08:11:40
【问题描述】:
我们正在运行一个 Web 应用程序并从 memcached 切换到 redis (2.4) 进行缓存。现在我们对redis的性能有些失望。 Redis 在同一台服务器上运行,我们只使用非常简单的 GET 和 SET 操作。在一些大量使用缓存值的请求上,我们有多达 300 个对 redis 的 GET 请求,但这些请求最多需要 150 毫秒。我们有大约 200,000 个活动密钥,每秒大约有 1,000 个 redis 请求。磁盘 io、ram 或 cpu 没有问题。由于我们现有的代码,我们不能简单地将 redis 请求组合在一起。 Memcached 的速度提高了大约 4 倍。 我们喜欢 redis 的地方在于,我们不需要任何缓存预热,并且将来可以使用更高级的数据存储功能。我们希望 redis 的性能类似于 memcached。所以也许我们在配置中遗漏了一些东西,这基本上是默认配置。
你知道 Redis 性能调优的最佳实践吗?
【问题讨论】:
-
Redis 和什么运行在同一台服务器上?客户端,还是运行 memcached 的客户端? Redis 请求的 150 毫秒听起来像是在访问交换/磁盘,而不是内存,或者您的意思是所有 300 个请求都需要 150 毫秒?
-
这是一个每秒大约 100 个 apache 请求的 Web 应用程序。 Redis 与 Web 应用程序本身和 mysql 数据库服务器在同一主机上运行,但我们计划很快将 apache 移动到 3 个负载均衡服务器。当前服务器有大约 64GB 的 RAM,redis 大约需要 100MB。有足够的可用内存,cpu 或 io 没有问题。服务器不会交换到磁盘。是的,我的意思是 300 个请求需要 150 毫秒,但在相同条件下,memcached 只需要 40 毫秒。
-
我能想到的唯一一件事是,如果您对所有请求使用到 Redis 的共享连接,而不是每个 Web 请求一个,您可能会遇到 Redis 延迟问题,但每秒 1000 个请求时,您不应该看到那么糟糕的延迟。抱歉,我今天的指导对我没有任何帮助:)
标签: performance caching web-applications redis