对运行 IIS 的生产系统进行负载测试的良好基准测试是啥?

Posted

技术标签:

【中文标题】对运行 IIS 的生产系统进行负载测试的良好基准测试是啥?【英文标题】:What is a good benchmark test for load testing a production system running IIS?对运行 IIS 的生产系统进行负载测试的良好基准测试是什么? 【发布时间】:2010-10-16 18:15:31 【问题描述】:

我注意到一些关于压力测试 IIS 的 posts,但我更感兴趣的是了解建立我的物理 Web 服务器可以处理的基准的好方法。

我现在正在开发一个生产系统,该系统似乎每天都在减速到几乎停止,似乎没有人能弄清楚是什么导致了这个问题。这是您的标准 N 层设置(客户端、Web 服务器、数据库服务器)。我创建了一些简单的 ASP.NET 页面,它们可以做一些简单的事情,我正在使用这些页面来建立压力测试基准,以便以后与已经存在的生产系统进行比较。

我已经构建了一个示例 aspx 页面,它只是返回一些有关盒子利用率的 Web 服务器统计信息,没有什么繁重的,可能只有几行代码。我还创建了一个简单的 Web 服务 (asmx),它将在给定正确 id 的情况下测试数据库连接,再次打开一个数据库连接和一个实际上并没有做任何事情的示例查询。

我想知道的是,以下测试应该在什么压力水平下运行?特别是,我正在使用 Microsoft 的 Web 应用程序压力工具,我很好奇大多数人会期望 Stress LevelStress Multiplier 可接受的范围应该是。我已经知道 Web 服务器在什么时候开始弯曲,它大约 20 的压力水平和 10 的压力乘数给予或接受,这导致大约 275 个页面请求/秒。我试图找出这个数字是否太低,这是否表明客户端和 Web 服务器之间存在问题或某种硬件问题,或者是否更多地表明存在没有错,只是系统太重了。

更新:自从我最初写这篇文章以来,代码已被移动到使用 IIS 7 运行 Windows 2003 的服务器上。

我现在想知道的是,如果我设置一个相对简单的测试,例如只提供一个小页面的基本 index.html 文件,你会期望“最佳”页面请求/秒我可以通过压力测试实现吗?

【问题讨论】:

现在还支持吗?我担心你没有收到安全更新... 您的网站可以公开访问吗? 嗨,米奇,感谢您的提问。不幸的是,我无法控制 Web 服务器的配置方式,但是是的,我相信它正在运行 IIS 5.2。该网站的部分内容可以公开访问,但实际上并非如此。它实际上是一种支持应用程序客户端的 Web 服务模型。 【参考方案1】:

我现在想知道的是,如果我设置 做一个相对简单的测试,比如一个 仅提供的基本 index.html 文件 上一小页,你会期待什么 “最佳”页面请求/秒我可以 通过压力测试实现?

我不能谈论 Microsoft 的 Web 应用程序压力工具,但它应该可以破坏托管在 IIS 上的静态 html 页面,直到测试机器和服务器之间的网络泛滥或测试服务器耗尽 CPU 来创建和编译测试。 ISS 所要做的就是每次发送相同的缓存响应。

要准确了解您的网站的运行情况,您确实需要对访问该网站的实际流量进行良好的展示。建立模型后,您可以开始扩大使用它的人数,以探索哪些页面最慢以及哪些服务器资源最先靠墙。

您将有一个或多个页面的性能对于给定的负载是不可接受的,或者某些服务器统计数据(如磁盘使用情况或数据库性能)正在查看过度使用情况。

除非您在与生产站点托管在相同架构上的站点上进行测试,否则很难提出架构建议。

对于表现不佳的页面,由于代码可供分析,因此更容易进行改进。

如果可以的话,我建议使用 Visual Studio Ultimate 版本进行负载测试。它还提供了一些 ASP.NET 分析工具来掌握代码和数据库调用部分。

【讨论】:

感谢您的信息。当时我试图确定我们的系统在哪里遇到瓶颈,所以我的想法是设置一个静态页面(因为 IIS 可以非常快速地为它提供服务),并查看该页面是否存在不可接受的性能。然后我可以获取这些结果并证明我们的服务器实际上不是问题,在两者之间存在导致问题(负载平衡器,一般网络拓扑等)的东西。最后它最终成为我们数据库上的 RAM如果我没记错的话,服务器在没有解释的情况下被切成两半。

以上是关于对运行 IIS 的生产系统进行负载测试的良好基准测试是啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何对API进行负载测试与调优(一)

性能测试入门-LoadRunner

性能测试基础知识

性能测试之siege

性能测试类型

使用 vs2008 进行负载测试,如何从被测系统获取统计信息?