【问题标题】:Many ways to do the same thing .. can performance testing help me decide?许多方法可以做同样的事情......性能测试可以帮助我做出决定吗?
【发布时间】:2011-03-06 23:27:15
【问题描述】:

我所知道的关于性能测试的一切都是它的名字所暗示的!

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

那么性能测试可以为我计算某个页面的性能吗? 我可以在开发机器(我自己的电脑/本地主机)上这样做吗? 或者我必须在托管服务器上对其进行测试?我必须拥有一台服务器或共享主机可以吗? 有哪些可用的书籍/文章?以及好用的免费工具?

我知道我问了很多问题,但实际上它们加起来可以帮助任何在我尝试决定使用哪种技术并且无法从经验丰富的人那里获得明确意见时脑子里有相同想法的人!

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

【问题讨论】:

    标签: c# asp.net sql performance


    【解决方案1】:

    首先,如果您知道您的数据库架构存在问题,那么听起来您此时并不真的需要进行负载测试,您最好弄清楚您的数据库问题是什么。

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

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

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

    您最终会遇到这样一个问题:即使使用其中一个软件包,您也只能从一台客户端计算机上完成这么多的事情,并且您需要开始分配该负载。这就是商业软件包开始真正提供一些好处的地方。

    对于 C# 和一般的 .Net 项目,Visual Studio(取决于您的版本)应该有类似测试项目的内容,您可以在此处阅读更多信息:http://msdn.microsoft.com/en-us/library/ms182605(v=vs.80).aspx 这可能更接近,具体而言,您一开始就在问。

    【讨论】:

    • 首先,我将从共享主机开始,如果网站获得了我想要的巨大流量,那么我将转移到专用服务器..但我仍然需要测试我的应用程序,看看它是否准备好扩展!我可以在共享帐户上执行此操作吗? Jmeter 可以与 asp.net 一起使用吗?
    • Jmeter 只是向您的 Web 服务器发出请求并记录有关响应的信息。所以是的,不管你写了什么,它都能告诉你有关从你的网络服务器返回的响应的信息。
    • +1 太棒了.. 任何压力负载测试工具? ..关于商业和免费包,我不明白我是否可以使用免费包对我的应用程序进行压力/负载测试?
    • 您可以使用 JMeter 进行测试,它可以选择将其设置为创建多个连接,并同时进行,等等。您可以计划获得所需的选项。但是要真正进行负载测试,您需要不止一台计算机参与测试。我无法与 .Net 测试项目交谈。
    【解决方案2】:

    不访问服务器最基本的是:

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

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

    【讨论】:

    • hmm,这是性能测试的基础还是只是衡量页面执行的一个简单想法?而这种方法的最大缺陷是你永远无法模拟负载压力测试!
    • 这是更简单的方法。还有:压力测试,极端情况测试,黑盒,白盒,[内存,磁盘]分析。此外,可以使用单元测试或 watir 或 autoIt 等工具自动化测试。有学术背景的人知道的更多,我只是一个经验丰富的 QA 软件工程师;)。
    • +1 表示我可能会使用的简单方法,直到我找到并学习一个好工具,让我以更专业的方式测试我的应用程序.. 如果您对那些测试文章/书籍有任何了解如果你能在这里引用它们就太好了!
    【解决方案3】:

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

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

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

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

    我的方法是将性能测试包含在开发生命周期中,通过创建一个测试环境(通常可以使用开发机器)来控制所有变量。

    我使用 JMeter 运行模拟常见用户旅程的性能测试,并确定系统开始超过最大允许响应时间的用户数量(我通常使用 1 秒作为限制)。一旦我知道那个点在哪里,我将使用分析工具来了解导致系统超过其响应时间的原因 - 是数据库吗?我应该引入缓存吗? PAL 之类的工具让这一切变得简单;在更详细的层面上,您应该使用分析器(Redgate 做得很好)。

    我运行这个过程一个下午,每两周一次,所以在项目结束时没有令人讨厌的意外。通过这样做,我对我的应用程序的性能有高度的信心,并且我知道在“生产”硬件上会发生什么。

    在生产环境中,访问数据以分析瓶颈要困难得多 - 一旦网站上线,通常更难获得运行性能测试的许可,这可能会导致网站瘫痪。在启动站点以外的任何地方,基础设施要求意味着拥有一个实时反映的测试环境通常过于昂贵。

    因此,我通常不会在生产环境中运行性能测试,这会将应用程序推向断点 - 但我会运行“冒烟测试”,并收集允许生成 PAL 报告的日志文件。冒烟测试将环境推到了我预计会达到临界点 50% 左右的水平 - 因此,如果我认为我们有 100 个并发用户的容量,冒烟测试将达到 50 个并发用户。

    【讨论】:

      猜你喜欢
      • 2010-09-18
      • 1970-01-01
      • 2018-07-02
      • 2013-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-02
      相关资源
      最近更新 更多