Redis Apache benchmark 测试并发情况下的缓存使用情况,感觉缓存的应用并没有起到多大作用

alanlong · 2015年07月03日 · 最后由 happy_us 回复于 2015年08月20日 · 7488 次阅读

采用的是 redis 服务器作为缓存服务器,今天做了对比实验,一组采用了 fragment cache 缓存,一组没有做缓存。用 Apache benchmark 做的并发测试。 服务器的配置:内存:8G; CPU : 双核; 系统:CentOS; 测试机:Windows 7; 采用的是内网测试,网络延时基本不会存在。 下表是得出的数据

然后在往上测并发 1000+ 的时候就不行了。就这些数据分析,感觉缓存的作用并不是很大。 按照正常的思路,采用缓存之后,每次加载页面都是直接从 redis 服务器的内存中读取的。 那么,当并发数大了之后,应该会明显感觉速度比不使用缓存时的速度快很多才是的 ( ⊙ o ⊙ )! 为什么会出现这种情况呢?是并发数太少,还是本身页面缓存的作用就不是很大?求大神帮忙解释下呗╮(╯_╰)╭ PS: 本地单机测试,不使用缓存加载时间平均时间大概在 400-600ms 之间;使用缓存的情况下,项目首页的加载时间平均在 200-250ms 之间。 使用缓存后页面加载的时间比不使用的情况下快了 200-300ms。

每个请求中,几大块的时间分别是多少(比如 controller, render, database, redis)? 有做 profiling 吗? 我猜效果不好的原因是:很大一块时间是在(controller + database)上,你目前使用缓存的方法只是减少了 render 的时间。

Rails log 里就可以粗略看到(log 调成 debug 模式),也可以用 newrelic 做简单的 profiling,另外还有 ruby-prof。 Ruby 中的 Profiling 工具 https://ruby-china.org/topics/25856 Ruby Profiler 详解之 ruby-prof(I) https://ruby-china.org/topics/25959

你好,你这种测试没说明具体情况,你可以把执行流程都想一样,用 redis 如果也需要通信呀,mysql 一样需要通信,mysql 也有缓存的能力。主要看数据量有多大,如果数据量很小,压力测试我觉得没太大意义。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号