很多方法都可以做同样的事情......性能测试可以帮我决定吗?

时间:2011-03-06 23:27:16

标签: c# asp.net sql performance

所有我对性能测试的了解都是它的名字所暗示的!

但是我在数据库查询技术方面遇到了一些问题,在正常情况和压力下它会如何影响我的应用程序的性能!

性能测试可以为我计算某个页面的性能吗? 我可以在开发机器(我自己的电脑/本地主机)上执行此操作吗? 或者我必须在托管服务器上测试它?我必须拥有一台服务器或共享主机吗? 什么是可用的书籍/文章?和好的免费工具?

我知道我问了很多问题,但实际上所有问题都会在试图决定使用哪种技术并且无法从经验丰富的人那里得到明确的意见时帮助那些有同样旋转的人。 !

提前感谢您的时间和精力=)

3 个答案:

答案 0 :(得分:1)

无法访问服务器的最基本功能是:

Console.write("Starting in " + DateTime.Now;)
//code
Console.write("Ending in " + DateTime.Now;)

然后您可以衡量哪些咨询需要更多时间。 但是你需要用更多场景进行测试,在某些情况下,某种方法可能比其他方法更好,反之亦然。

答案 1 :(得分:1)

首先,如果您知道数据库体系结构存在问题,那么听起来您此时并不需要进行负载测试,您可以更好地了解数据库问题。

总体来说,“我怎样才能加载测试,哪些方向很好?”这取决于几件事。首先,您可以在您的开发环境中进行测试,但除非它与生产环境(服务器设置/ CPU内存/等)的设置相同,否则它只是一个估计值。一般来说,我更喜欢使用尽可能模仿生产环境的临时/测试环境。

如果您认为自己的应用程序具有较高的使用率,那么您可能想知道自己的效果是什么时期,无论是专用托管还是共享托管。但是,我会说,如果您期望高流量网站/应用程序,您可能有很多理由拥有专用托管环境(或基于云的解决方案)。

有一些不错的免费工具可用,特别是有http://jmeter.apache.org/可以插入一堆东西,问题是,虽然gui界面比几年前更好,但它不如一些可用的商业选择。

你最终会遇到这样一个问题,你只能从一台客户端计算机上敲打一些东西,即使是这些软件包中的一个,你也需要开始分配这些负载。这就是商业套餐开始真正提供一些好处的地方。

对于C#,特别是.Net项目,一般来说,Visual Studio(加上你的版本)应该有类似Test Projects的东西,你可以在这里阅读更多内容:http://msdn.microsoft.com/en-us/library/ms182605(v=vs.80).aspx这可能更接近,特别是你首先要问的是什么。

答案 2 :(得分:0)

这是一个棘手的主题,你需要的不仅仅是Stack Overflow来解决这个问题 - 尽管我不知道任何书籍或网站。这只是我的经历......

一般来说,你想知道两件事:

  • 我的网站可以处理多少访问者?
  • 我需要做些什么来增加这个数字?

您通常需要同时管理这些内容。

我的方法是将性能测试纳入开发生命周期,方法是创建一个测试环境(开发机器通常没问题),我可以在其上控制所有变量。

我使用JMeter来运行模拟常见用户旅程的性能测试,并确定系统开始超过最大允许响应时间的用户数(我通常使用1秒作为限制)。一旦我知道这一点,我将使用分析工具来了解导致系统超出响应时间的原因 - 它是数据库吗?我应该介绍缓存吗?像PAL这样的工具使这很容易;在更详细的层面上,你应该使用剖析器(Redgate做得很好)。

我执行这个过程一个下午,每两周一次,所以在项目结束时没有令人讨厌的惊喜。通过这样做,我对我的应用程序的性能有了很高的信心,而且我知道对于#34; production"硬件。

在生产方面,获取数据的难度更大,这使您可以分析瓶颈 - 一旦网站上线,通常很难获得运行性能测试的权限把网站搞定。除了初创网站之外的任何其他内容,基础架构要求意味着通常过于昂贵而无法拥有反映实时的测试环境。

因此,我通常不会对生产进行性能测试,从而将应用程序推向崩溃点 - 但我会运行"冒烟测试",并收集允许PAL报告的日志文件要生成。冒烟测试将环境推向了一个我预计会达到破裂点50%左右的水平 - 所以如果我认为我们有100个并发用户的容量,那么烟雾测试将会有50个并发用户。 / p>