关注于测试自动化和测试管理,我是一个永远的测试新手。

使用OSCache缓存的性能调优验证

上一篇 / 下一篇  2007-11-22 14:10:05 / 个人分类:Loadrunner

%z.gl_U0使用OSCache缓存的性能调优验证

f$Ds8p7w5w7u_P0

0U`9F)Dt0好久没写了,最近项目太多,目前手里还有2个性能测试的项目排着,偶都快成脚本机器了,不说废话了。51Testing软件测试网2_(G,O d?R g:h

51Testing软件测试网:PO-t+i#t&bI$|"l

最近测试一个java开发的项目时,由于程序逻辑超级复杂,有些逻辑需要从3个表甚至以上获取数据,然后进行运算,导致SQL Server 2005压力超大,数据库连接池跑一会儿就满,每个事务的交易响应时间也超过40秒,反正就是性能一塌糊涂,匆忙写了一份报告告诉领导,他们现在这个不行,要不调整框架,要不进行调优。51Testing软件测试网};h V:C6N!K!a

51Testing软件测试网RJ8\)~s&Gy

开发后来把这几个页面进行了程序级的缓存,但是执行效果仍然不理想,直到后来采用了OSCache技术。

.{`3D'O,J051Testing软件测试网"L@kq:HY S}

OSCache是一种以标签为基础,对页面进行快速内存缓冲的技术,目前应用比较普遍。具体介绍:http://hanfeng.blogbus.com/logs/2004/08/324010.html

-NVuD7|;[^9K0N0F0

u.j'}8oh#WrWKT0我们调优时,尝试了2种不同的方式,一个是Cache到内存,一个是Cache到磁盘。

gW.@EjS7O K)_0

3H$} xV!d0Cache到内存很好理解,当用户发送第一个交易请求后,服务端去数据库取数据,然后运算完毕,返回结果值,同时把值作为cache放到内存里,下次再次发送对应请求则直接到内存里读;CACHE到磁盘里就是生成一个文件,同时在内存中生成对应文件的索引,再次访问时直接通过索引找文件读取。51Testing软件测试网 W Nc|e3JV

51Testing软件测试网j$l0LI;y4Oz)K4bX

调整后,两种方法分别验证发现效率差不多,不同的只是是牺牲磁盘效率还是牺牲内存而已。

aU k*c"S051Testing软件测试网q`BD;~s

到了这里,大家应该可以发现,时效性高的程序(就是数据更新较为频繁)使用这个技术效果没有时效性低的程序大。51Testing软件测试网O5mR'B ZN1b.y

51Testing软件测试网m cL%j&F#C:U"i;h

个人理解,加了缓存的页面就想访问静态页面,当然非常快了。

Q-hgc*a5a3zm051Testing软件测试网R"f3{*OUk q$sh

不过也发现这项技术有使用的局限性:
o'SA6f+MA%y0如果每次提交的请求必须完全相同(这样才能访问对应的cache;如果不同则不走cache直接去执行程序,那缓存无意义),例如:java的face类因为POST请求时,有关联项,每次51Testing软件测试网3P2`k6N#apEf

j^ X)Ov e1ea0请求都不一样,所以不能使用,要修改为html;

5x R L8Frm+B5B6y\&O051Testing软件测试网*V~%t?q [_|5m){.H:l\

前后测试结果对比:
3lOr2j Rc-P0==============================================================
D$MK+J ge0测试点   前并发数 前交易响应时间 后并发数 后交易响应时间51Testing软件测试网*KfDB G2|\$o|
测试一   200     40.53秒      1000    3.44秒
6d-KD4W!tvN0测试二   300     43.42秒      500     0.707秒
DkSGU0测试三   300     27秒+        500     2.06秒
$M+P+D"D8Q|0测试四   300     20秒+        500     2.83秒
g;G(m/Nz,c0测试五   300     20秒+        500     2.56秒51Testing软件测试网3p n0j]S+v
测试六   300     20秒+        500     3.59秒
$BuI*Daa mbz0==============================================================51Testing软件测试网K$ks im1PL


TAG: LoadRunner 验证 Java调优 Loadrunner

比较狠的测试间 引用 删除 qiguojie   /   2007-12-23 16:18:39
我所说的局限性,不是指用户提交的是不同的数据。:)

是因为即使提交相同的数据,但是实际提交到web server 的请求连接仍然是不同的。

例如:第一次提交数据是:qiguojie,实际发送到web server 的http请求连接是,www.baidu.com/?qiguojie&YIYUIFPOIPO

第二次提交数据是:qiguojie,实际发送到webserver的http请求却变成了 www.baidu.com/?qiguojie&OJLFJLJKLJD

这样,即使提交相同的数据,但是实际上webserver也是认为你访问了不同的页面,到了OSCache那里,也做了不同页面的缓存,因此缓存就变得无意义了
HMILYJCH 人淡如菊 引用 删除 hmilyjch   /   2007-12-14 11:55:48
5
正如你说的局限性,提交的请求相同才可以cache;
那么最后的测试结果,时间很短的那些是不是都是已经有cache的测试结果呢?
如果大部分人的提交请求都是不一致的,怎么办呢?
 

评分:0

我来说两句

qiguojie

qiguojie

北京测试一草根儿

日历

« 2024-04-25  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 120401
  • 日志数: 39
  • 图片数: 1
  • 建立时间: 2007-06-05
  • 更新时间: 2011-06-29

RSS订阅

Open Toolbar