博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2011年2月15日

摘要: 在之前的两篇文章中,基本上介绍了如何录制脚本和生成并发用户,同时还对测试报告中的几个图表做了简单的说明。今天这篇文章做为这个系列的最后一篇,将会介绍如何通过测试报告来查看系统的运行情况,找出影响性能的因素,以及如何去进行优化。 首先,看一下这张并发用户的图: 这是在优化之前我生成的测试报告的截图,通过这张图可以看到这个测试过程长达24分钟(这在之前的无数次测试中算是具有代表性的了),而并发用户峰值是从4--15分钟,持续时间近11分钟。就目前而言,其执行的测试时间和高峰持续时间肯定要比discuz(php)要差了不少,因为dz那边基本上也就是10多分钟就‘完活’了。这里 阅读全文

posted @ 2011-02-15 10:50 steve.z 阅读(250) 评论(0) 推荐(0)

摘要: 在上文中,介绍了如果录制脚本和设置脚本执行次数。如果经过调试脚本能够正常工作的话,就可以设置并发用户数并进行压力测试了。 首先我们通过脚本编辑界面上的“工具”菜单项,选择该菜单的第二项“Create Controller Scenario(创建控制场景)”,如下图: 这时,lr会弹出一个窗口,我们只要在select scenario type项中的number of vusers设置成1000,这样我们就可以用1000并发用户来测试我们上文中所执行的操作了,如下图: 注:之前在上文中设置脚本执行次数为5,这里又做了1000的并发用户,所以最终我们 阅读全文

posted @ 2011-02-15 10:48 steve.z 阅读(226) 评论(0) 推荐(0)

摘要: DiscuzNT3正式版发布已经有一段时间了,最近半年多来很少再写关于这个产品的技术文章了,一是时间,二是精力有限。不过在正式版发表之后,倒是有了些功夫,同时我们的一个商业客户在从2.6版本升级到3.0正式版之后,出了一个小插曲,导致不得不退回到2.6版本。因为这个客户的论坛访问量和发帖量比较大,平时在线人数5000,日发帖量在2-3万左右。所以出了一些性能上的问题,在大并发情况下,服务器响应超时,且在峰值时越发不稳定。之前我在公司内部用了tinyget做了一些简单的压力测试,发现了一些问题,但原因尚不明显,所以在公司会议上就有人提出使用loadruner来做一下压力测试,看看3.0产品的性能 阅读全文

posted @ 2011-02-15 10:44 steve.z 阅读(172) 评论(0) 推荐(0)

摘要: 有很多理由都能说明为什么我们应该写出清晰、可读性好的程序。最重要的一点,程序你只写一次,但以后会无数次的阅读。当你第二天回头来看你的代码时,你就要开始阅读它了。当你把代码拿给其他人看时,他必须阅读你的代码。因此,在编写时多花一点时间,你会在阅读它时节省大量的时间。  让我们看一些基本的编程技巧:尽量保持方法简短永远永远不要把同一个变量用于多个不同的目的使用自描述的变量名和方法名尽可能的把变量定义在靠近使用它的地方拒绝神秘数字友好的对待你的语言不要逆常规而行警惕过早优化积极重构测试过的程序不要过度沉迷于技巧通过习例学习新知  现在,让我们把每个小点展开来详细讲一下。  1. 尽量保持方法简短   阅读全文

posted @ 2011-02-15 09:41 steve.z 阅读(158) 评论(0) 推荐(1)

2011年2月14日

摘要: 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://monw3c.blogbus.com/logs/23488116.htmlDBA notes上果然好东西很多许多大型(只是访问量,而不是公司规模)的web 2.0的网站架构上面都有现在收集整理一下这种资料.向来可遇不可求啊WikiPedia 技术架构学习分享http://www.dbanotes.net/opensource/wikipedia_arch.htmlYouTube 的架构扩展http://www.dbanotes.net/opensource/youtube_web_arch.htmlInternet 阅读全文

posted @ 2011-02-14 09:07 steve.z 阅读(402) 评论(0) 推荐(1)

摘要: 一个小型的网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构、性能的要求都很简单。随着互联网业务的不断丰富,网站相关的技术经过这些年的发展,已经细分到很细的方方面面,尤其对于大型网站来说,所采用的技术更是涉及面非常广,从硬件到软件、编程语言、数据库、WebServer、防火墙等各个领域都有了很高的要求,已经不是原来简单的html静态网站所能比拟的。  大型网站,比如门户网站,在面对大量用户访问、高并发请求方面,基本的解决方案集中在这样几个环节:使用高性能的服务器、高性能的数据库、高效率的编程语言、还有高性能的Web容器。 阅读全文

posted @ 2011-02-14 09:03 steve.z 阅读(3841) 评论(0) 推荐(2)

2011年2月12日

摘要: 台阶一:CMMI一级,完成级。在完成级水平上,企业对项目的目标与要做的努力很清晰,项目的目标得以实现。但是由于任务的完成带有很大的偶然性,企业无法保证在实施同类项目的时候仍然能够完成任务。企业在一级上的项目实施对实施人员有很大的依赖性。   台阶二:CMMI二级,管理级。在管理级水平上,企业在项目实施上能够遵守既定的计划与流程,有资源准备,权责到人,对相关的项目实施人员有相应的培训,对整个流程有监测与控制,并与上级单位对项目与流程进行审查。企业在二级水平上体现了对项目的一系列的管理程序。这一系列的管理手段排除了企业在一级时完成任务的随机性,保证了企业的所有项目实施都会得到成功。   台阶三:C 阅读全文

posted @ 2011-02-12 17:10 steve.z 阅读(236) 评论(0) 推荐(0)

2011年2月9日

摘要: ASP.NET 页运行时,此页将经历一个生命周期,在生命周期中将执行一系列处理步骤。这些步骤包括初始化、实例化控件、还原和维护状态、运行事件处理程序代码以及进行呈现。了解页生命周期非常重要,因为这样做您就能在生命周期的合适阶段编写代码,以达到预期效果。此外,如果您要开发自定义控件,就必须熟悉页生命周期,以便正确进行控件初始化,使用视图状态数据填充控件属性以及运行任何控件行为代码。(控件的生命周期基于页的生命周期,但是页引发的控件事件比单独的 ASP.NET 页中可用的事件多。)常规页生命周期阶段一般来说,页要经历下表概述的各个阶段。除了页生命周期阶段以外,在请求前后还存在应用程序阶段,但是这些 阅读全文

posted @ 2011-02-09 21:09 steve.z 阅读(164) 评论(0) 推荐(0)

2011年2月5日

摘要: SQL Servertimestamp数据类型与时间和日期无关。SQL Servertimestamp是二进制数字,它表明数据库中数据修改发生的相对顺序。实现timestamp数据类型最初是为了支持 SQL Server 恢复算法。每次修改页时,都会使用当前的 @@DBTS 值对其做一次标记,然后 @@DBTS 加1。这样做足以帮助恢复过程确定页修改的相对次序,但是timestamp值与时间没有任何关系。@@DBTS 返回当前数据库最后使用的时间戳值。插入或更新包含timestamp列的行时,将产生一个新的时间戳值。select @@DBTS from table_name公开数据库中自动生成 阅读全文

posted @ 2011-02-05 16:04 steve.z 阅读(2433) 评论(0) 推荐(1)

摘要: 对于DataReader读取大的二进制数据时,一次性把数据加载到内存中并不是什么好的做法。有更好的做法是在执行DataReader.ExecuteReader()时,使用CommandBehavior.SequentialAccess枚举作为参数。这样就可以通过DataReader.GetBytes()来逐块访问数据。先来介绍一下CommandBehavior枚举:提供对查询结果和查询对数据库的影响的说明。成员名称说明CloseConnection在执行该命令时,如果关闭关联的DataReader对象,则关联的Connection对象也将关闭。Default此查询可能返回多个结果集。执行查询可 阅读全文

posted @ 2011-02-05 15:23 steve.z 阅读(2913) 评论(0) 推荐(1)