??xml version="1.0" encoding="utf-8" standalone="yes"?>青青草在线免费观看,久久久久久久97,中文字幕久热精品在线视频http://www.aygfsteel.com/shisanfeng/category/31954.html闻道有先后,术业有专攻,如是而已zh-cnWed, 04 Jun 2008 17:27:52 GMTWed, 04 Jun 2008 17:27:52 GMT60Z Windows 下的 Web 服务器测?/title><link>http://www.aygfsteel.com/shisanfeng/articles/205877.html</link><dc:creator>龙震</dc:creator><author>龙震</author><pubDate>Wed, 04 Jun 2008 09:19:00 GMT</pubDate><guid>http://www.aygfsteel.com/shisanfeng/articles/205877.html</guid><wfw:comment>http://www.aygfsteel.com/shisanfeng/comments/205877.html</wfw:comment><comments>http://www.aygfsteel.com/shisanfeng/articles/205877.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/shisanfeng/comments/commentRss/205877.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/shisanfeng/services/trackbacks/205877.html</trackback:ping><description><![CDATA[<div style="font-size: 12px"><br />   随着 Internet 的日益普及,现在Z B/S l构的大型应用越来越多,可如何对q些应用q行试成ؓ日益q切的问题。有许多试人员来信问我 B/S 的测试如何做Q由于工作较J忙Q对大家提出的问题也是头痛医头脚痛医脚,没有?Web 的测试过E做一个整体的概述。希望通过本篇能够让大家了解大?Web 应用是如何来q行试的?br /> <br />   B/S 下的功能试比较单,关键是如何做好性能试。目前大多数的测试h员认为只要跑一些测试工兯明我的品是可以辑ֈ性能的就 OK 了,Z证明而去试是没有Q何h值的Q关键是要发C品性能上的~陷Q定位问题,解决问题Q这才是试要做的?br /> <br />   首先我们从两个方面分析如何进?Web 试Q从技术实C来讲一般的 B/S l构Q无论是 .NET q是 J2EEQ都是多层构Ӟ有界面层、业务逻辑层、数据层。而从试的流E上来说Q首先是发现问题Q分析问题,定位问题Q再由开发h员解决问题。那?B/S 的结构的试如何来做呢?<br /> <br />   如何发现问题是我首先要介l的Q在?Web 试之前你需要一些资料,比如产品功能说明书,性能需求说明书Q不一定很完善Q但一定要有,明确试目标Q这是基本的常识Q可是我往往看到的是已经开始动手测了,但还不知自己的系l要辑ֈ的性能指标是什么。这里我单讲一下测试的性能指标Q?br /> <br />   通用指标Q指 Web 应用服务器、数据库服务器必需试)Q?br /> <br />     Processor TimeQ指服务?CPU 占用率,一般^均达?70% Ӟ服务接q饱和;<br />     Memory Available MbyteQ可用内存数Q如果测试时发现内存有变化情况也要注意,如果是内存泄露则比较严重Q?br />     Physicsdisk TimeQ物理磁盘读写时间情c?br /> <br />   Web 服务器指标:<br /> <br />     Avg RpsQ^均每U钟响应ơ数=总请求时?U数Q?br />     Avg time to last byte per terstionQmstesQ:q_每秒业务角本的P代次敎ͼ有h会把q两者؜淆;<br />     Successful RoundsQ成功的hQ?br />     Failed RoundsQ失败的hQ?br />     Successful HitsQ成功的点击ơ数Q?br />     Failed HitsQ失败的点击ơ数Q?br />     Hits Per SecondQ每U点L敎ͼ<br />     Successful Hits Per SecondQ每U成功的点击ơ数Q?br />     Failed Hits Per SecondQ每U失败的点击ơ数Q?br />     Attempted ConnectionsQ尝试链接数?br /> <br />   数据库服务器指标Q?br /> <br />     User 0 ConnectionsQ用戯接数Q也是数据库的q接数量Q?br />     Number of deadlocksQ数据库死锁Q?br />     Butter Cache hitQ数据库 Cache 的命中情c?br /> <br />   上面的指标只是一些通用的指标,起到抛砖引玉的作用,对于不同的应用你q必需作相应的调整Q比如程序用的?.NET 技术的Q则必需加入一些针Ҏ的试指标。对于这些指标的详细了解Q你可以参?Windows 下面?SystemMonitor 的帮助与 LoadRunner、ACT 的帮助。对于发现问题,指标的设|非帔R要,它会帮你定性的发现一些错误。对于定性的压力试我就不做q多的分析,工具很多Q流行的主要?LoadRunner、ACT、WAS、WebLoad 各个工具有它的用范_其中我各个认为:<br /> <br />     LoadRunner 最全面Q它提供了多U协议的支持Q对复杂的压力测试都可以胜QQ?br />     WAS ?ACT 则对微Y的技术支持的比较好,其中 WAS 支持分布式机测试;<br />     ACT 则是?.NET 集成比较好,支持 ViewStateQ?NET 下控件缓存的支持Q的试?br /> <br />   在这一阶段试你要不断的跟据系数的试目标q行变化Q一开始由于系l过于庞大,所以我们要分成若干个子pȝQ各个子pȝ的性能目标必需明确Q主要是q发指标定一个阈|同时讑֮一些与pȝ相关的测试参敎ͼ应用服务器,数据库服务器都要有,对达不到阈值的与一些通用参数有问题的子系l进行深入分析。比如它的ƈ发达不到你的要求Q证明子pȝ性能有问题,或是数据库用戯接过高,E序没有释放用户q接{等。这个我们要对子pȝq行详细试Q由?B/S l构下,囄的请求对性能的媄响较大,所以我们对子系l测试时要分两个部分q行Q?br /> <br />     非程序部分,卛_片等{;<br />     应用E序本n?br /> <br />   通过事务或函数的分离Q可以把q两块实现单独的试Q具体做法参考各个工L手册Q我q里׃做说明。对子系l的试参数的设|要求则更高Q它有助你后面精的定位问题Q比如对异常、死锁、网l流量等{前面没有注意到的情늚增加Q同时你要注意增加测试参数的攉对系l的性能影响比较大,所以一般不要超q?10 个。刚刚介l的整体的性能试指标也不要增加很多,q样影响会小一炏V最后在q一阶段要说明的是数据库的数据量会很大程度的影响性能Q所以要Ҏ前面的性能需求说明书向数据库中模拟相应的数据量,来进行测试,q样才有更高的可信度?br /> <br />   上面所说的是对问题的发玎ͼ下面是分析问题原因Q这一步的要求比较高,一般由试人员与程序员配合完成Q当然如果你有相当的开发经验,再做q方面的试Q就更ؓ隑־。下面我们说说如何精定位问题,出现问题的可能性可能有很多U,大致分以下几U:<br /> <br />     性能达不到目标;<br />     性能辑ֈ目标Q但有一些其它的问题Q比如异常、死锁。缓存命中过低,|络量较大Q?br />     服务器稳定性的问题Q比如内存泄漏等?br /> <br />   发现q些问题起马的要求要有一ƾ用的比较U心的性能分析与优化工P比如微Y?.net 下就有自己开发的工具Q对 Borland ?Java 开发工具中也有cM的工P但我个h认ؓ更好的工h Rose 下的 Purify ?QuantifyQ主要是他对.net ?Java、C++ 都有支持Q而且分析效果特别专业。我们先了解一?Rational Purify?br /> <br />   Rational Purify 能自动找?Visual C/C++ ?Java 代码中与内存有关的错误,保整个应用E序的质量和可靠性。在查找典型?Visual C/C++ E序中的传统内存讉K错误Q以?JavaQC# 代码中与垃圾内存攉相关的错误方面;Rational Quantity 则是一N对函数的性能分析利器Q用它你可以从囑Ş化的界面中得到函数调用的旉Q百分比与次敎ͼ以及子函数所占时_使你可以更快的定位性能瓉?br /> <br />   我们先说性能优化与异常的处理Q性能优化有一个原则,即用旉比例最大的q行优化Q效果才最明显。比如有个函数它的执行时间ؓ 30 U,如果你优化了一癑ր则执行旉?0.3 U,提升?29.7 U;而如果它的执行时间ؓ 0.3 U,优化后ؓ 0.003 U,实际提升?0.297 U,提升的效果ƈ不明显但写过E序的h都知道,后者性能优化的代h大?br /> <br />   在性能优化的过E中Q一般是先数据库Q后E序。因为数据库的优化不需要修改程序,修改的风险很。但如何才能定是数据库的问题,q就需要技巧,在?Quantity Ӟ你一路分析下去,大多数最l会发现Q是数据库查询函数占用时间比较大Q比如什?SqlCmd.ExecuteNoQuery {等数据库执行函敎ͼq时你就需要分析数据库?br /> <br />   数据库的分析原则是先索引Q后存储q程Q最后表l构视图的优化。烦引的优化是最单也是通常最有效的方法,如果合理的用会带来意想不到不到的效果。在q里我要l大家简单的介绍一下我的最爱:SQLProfile、SQL 查询分析器?br /> <br />   Precise SQLProfile 是一?SQL 语句跟踪器,可以跟踪E序程使用?SQL 语句与存储过E,l合查询分析器对 SQL 的分析,可以对烦引的优化做出很好的判断,但烦引也不是万能的,在增删改较多的表Q烦引过多会引vq些操作的性能下降Q所以判断还是需要一定的l验。同旉对用户用频度最高的 SQL q行优化也是最行之有效的,q时我则需?PreciseQ它可以观测某一个较长时间内?SQL 语句的执行情c?br /> <br />   数据库优化的潜能挖光后,如果q是达不到性能要求或是q有问题Q则要从E序来进行优化,q是E序员做的事。测试h员要做的Q就是告诉他们,哪个函数执行q多引v了性能下降Q比如异常过多,某个循环q多Q或?DCOM 调用q多{等Q但说服E序员也是一件不Ҏ的事Q你要在q一阶段做的一定要有几q的~程l验Qƈ且要让程序员感到听你的性能会有提升Q这是一件很不容易的事情哦?br /> <br />   内存的分析,一般是一个长期分析的q程Q要做好不容易,首先要有长期奋战的准备,其次内存泄漏的分析最好是攑֜单元试之中同步q行Q而不是要{到最后再d现问题,当然Z问题也只好面对,一般这c问题都是在服务器运行了很久才暴露出来,一旦发现问题后Q则需要定位问题,分析的原则采用子pȝ怺独立q行Q找到最问题的pȝ集,或是借助内存分析工具观察内存对象情况Q初步定位问题,再用 Purify q行q行时分析,通常 C++ 内存问题比较多, Java ?.NET 比较,一般由 GC 不合理引赗C++ 的内存错误就比较多了Q主要常见的有:<br /> <br />     Array Bounds ReadQABRQ:数组界?br />     Array Bounds WriteQABWQ:数组界?br />     Beyond stack ReadQBSRQ:堆栈界?br />     Free Memory ReadQFMRQ:I闲内存?br />     Invalid pointer ReadQIPRQ:非法指针阅读<br />     Null Pointer ReadQNPRQ: I指针阅?br />     Uninitialized Memory ReadQUMRQ:未初始化内存d<br />     Memory LeakQ内存泄?br /> <br />     注:如果需要更多的信息Q可以参?Purify 的帮助信息?br /> <br />   Z提一句,Z么我要说做单元测试时做内存分析比较好Q由于单元测试针对的是单一功能Q这时结合单元测试案例做内存分析会更快的定位问题Q同时由于问题较早的发现Q则后期的风险则会减,当然如果l合代码覆盖工具 PureCoverage 来做更完美了?br /> <br />   注:本篇只是?B/S 应用的测试过E作一个整体的描述Q对某一个阶D用的工具只是作大概的介绍Q你也可使用你比较熟悉的工具辑ֈ相同的目标?br /> <br /> </div> <img src ="http://www.aygfsteel.com/shisanfeng/aggbug/205877.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/shisanfeng/" target="_blank">龙震</a> 2008-06-04 17:19 <a href="http://www.aygfsteel.com/shisanfeng/articles/205877.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用 Microsoft Web Application Stress Tool ?Web 服务器进行压力测?http://www.aygfsteel.com/shisanfeng/articles/205820.html龙震龙震Wed, 04 Jun 2008 07:09:00 GMThttp://www.aygfsteel.com/shisanfeng/articles/205820.htmlhttp://www.aygfsteel.com/shisanfeng/comments/205820.htmlhttp://www.aygfsteel.com/shisanfeng/articles/205820.html#Feedback0http://www.aygfsteel.com/shisanfeng/comments/commentRss/205820.htmlhttp://www.aygfsteel.com/shisanfeng/services/trackbacks/205820.html
  Web 压力试是目前比较流行的话题Q利?Web 压力试可以有效地测试一?Web 服务器的q行状态和响应旉{等Q对?Web 服务器的承受力测试是个非常好的手法。Web 压力试通常是利用一些工P例如微Y?Web Application Stress、Linux 下的 Siege、功能全面的 Web-CT {等Q这些都是非怼U?Web 压力试工具?br />
  虽然q些工具l我们测试服务器承受能力带来方便Q但是它们的危害却更是惊人,甚至于利用随便一U比较全面的试工具可以对一台小型的 Web 服务器发动灾难性的拒绝式攻凅R下面我带大家利用微Y?Web Application Stress q行一?Web 压力试Q其目的是ؓ了让大家看到它的巨大危害?br />
一、工L单介l?/strong>

  Microsoft Web Application Stress Tool 是由微Y的网站测试h员所开发,专门用来q行实际|站压力试的一套工兗透过q套功能强大的压力测试工P您可以用少量的客户端计机仿真大量用户上线对网站服务所可能造成的媄响,在网站实际上U之前先Ҏ所设计的网站进行如同真实环境下的测试,以找出系l潜在的问题Q对pȝq行q一步的调整、设|工作。就是因些特性,才它具备了 D.O.S 轰炸的功能?br />
  提C:D.O.SQ拒l服务攻击)通过使你的服务计机崩溃或把它压跨来L你提供服务。简单来_是让你的计机提供可能多的服务从而你的计算机陷入崩溃的边缘或崩溃?br />
二、工L单设|?/strong>

  打开 Web Application Stress ToolQ很z的一个页面,上面是工hQ左下方是功能选项Q右下方是详l设|选项。在对目?Web 服务器进行压力测试之前,先对它进行一些必要的讄?br />

  1. ?#8220;Settings”的功能设|中Q一个是 Stress level QthreadsQ这里是指定E序在后台用多少U程q行hQ也是相当于模拟多个客户机的q接Q更加Ş象的是说设|多蘪炸的U程数。一般填?500?000Q因个线E数是根据本机的承受力来讄的,如果你对自己的机器配|有_信心的话Q那么设|的高Q蘪炸的效果好?br />

  2. ?#8220;Test Run Time”中来指定一ơ压力测试需要持l的旉Q分为天、小时、分、秒几个单位U别Q你Ҏ实际情况来设|吧Q?br />
  3. 其余的选项不太重要Q这里就不再费W墨Q朋友们可以自己试一下设|?br />
三、压力测?/strong>

  工具介绍完了Q下面来准备条gQ这里与一个朋友商量好q行试Q他是单Z|,机器配置?CPU Athlon XP2500+、内?512MB、硬?80GB {,机器配置q不错。他在机器上安装?IISQ架设了一台对外的 Web 服务器,Web 服务中的E序是动|?7.0。我利用压力测试工具对q台服务器进行测试?br />
  步骤 1Q在工具中点右键Q选择 Add 命oQ增加了一个新的测试项目:New ScriptQ对它进行设|,在主选项中的 Server 中填写要试的服务器?IP 地址。在下方选择试?Web q接方式Q这里的方式 Verb 选择 GetQPath 选择要测试的 Web 面路径Q这里填?/Index.aspQ即动网的首|件?br />

  步骤 2Q在“Settings”的功能设|中?Stress level QthreadsQ线E数讄?1000。完毕后Q点工具中的灰色三角按钮卛_q行试。测试完毕,{待朋友把Q务管理器以及q接查看的截囑֏q来Q?br />

  d开始后Q朋友从d理器中可以看到 CPU 使用率已l达?100%Q损耗率辑ֈ最大。在 CMD H口中用命?netstat -anQ可以看到我?IP 地址在朋友服务器上的80端口q行了非常多的连接。而且它的 Web |站已经打不开了,提示q多用户q接Q达C?D.O.S d一L目的?br />


  试想Q如果利用多台肉鸡对一台服务器q行 Web 压力试Q那么对q台服务器来说将是灭之灾,所以朋友们在用它之前一定要慎重考虑?br />


龙震 2008-06-04 15:09 发表评论
]]>
վ֩ģ壺 ̩| | | | | | | | ֲ| | | | | ɽ| | | | | | ֶ| ɽ| | | | Ϫ| | Դ| ǰ| | | | | | ͼ| Զ| ½| | Ԫ| | | |