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

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

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

51Testing软件测试网RaE0I([?

使用OSCache缓存的性能调优验证51Testing软件测试网 c k8ToZ2z%n

A3k Z9JD1co_!W0好久没写了,最近项目太多,目前手里还有2个性能测试的项目排着,偶都快成脚本机器了,不说废话了。51Testing软件测试网(D0QW5x(sBx

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

DH;\x6SZ%[051Testing软件测试网CA9f`-E.RXyl

开发后来把这几个页面进行了程序级的缓存,但是执行效果仍然不理想,直到后来采用了OSCache技术。51Testing软件测试网/J0b'l _q(q I

51Testing软件测试网4N |2kK tE)y"E

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

51Testing软件测试网1r:XQda2|

我们调优时,尝试了2种不同的方式,一个是Cache到内存,一个是Cache到磁盘。51Testing软件测试网%G7Yz:di M

1K{P1BXJ0Cache到内存很好理解,当用户发送第一个交易请求后,服务端去数据库取数据,然后运算完毕,返回结果值,同时把值作为cache放到内存里,下次再次发送对应请求则直接到内存里读;CACHE到磁盘里就是生成一个文件,同时在内存中生成对应文件的索引,再次访问时直接通过索引找文件读取。

CT(N.UR!A]051Testing软件测试网+k%o3@H\0K ?

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

Z a7lc0B4_JV051Testing软件测试网J~d7@6u3l

到了这里,大家应该可以发现,时效性高的程序(就是数据更新较为频繁)使用这个技术效果没有时效性低的程序大。

o(__%@"ny051Testing软件测试网 m8zuO3e3\6ET h E z)w

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

s1`!^~.B&O3O'|X|^051Testing软件测试网.]%Jl0L%j

不过也发现这项技术有使用的局限性:
xD+Y3m,g5~V{*L5^0如果每次提交的请求必须完全相同(这样才能访问对应的cache;如果不同则不走cache直接去执行程序,那缓存无意义),例如:java的face类因为POST请求时,有关联项,每次

CV TJ9~b\HK051Testing软件测试网 T1^"Y6]0^Q1}

请求都不一样,所以不能使用,要修改为html;51Testing软件测试网,{e(H#\Ubn7d

51Testing软件测试网{5q)| H M v,~a3m

前后测试结果对比:51Testing软件测试网,JuC1t)\Qe[r
==============================================================
#U _(Poz M0测试点   前并发数 前交易响应时间 后并发数 后交易响应时间51Testing软件测试网L_c3~;Rn
测试一   200     40.53秒      1000    3.44秒51Testing软件测试网]voO&WC*w2y
测试二   300     43.42秒      500     0.707秒
Iuq[q J7anyK6|.r0测试三   300     27秒+        500     2.06秒51Testing软件测试网z V ?7MKrLz%a
测试四   300     20秒+        500     2.83秒
m{GCfM8kB,\p0测试五   300     20秒+        500     2.56秒51Testing软件测试网6pD\)} fv
测试六   300     20秒+        500     3.59秒
ABG6G5R0==============================================================51Testing软件测试网ud}#r&R"HH c+N


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-03-24  
     12
3456789
10111213141516
17181920212223
24252627282930
31      

数据统计

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

RSS订阅

Open Toolbar