我们在经典的ASP环境中实现了一个新的解决方案,它使用COM interop来安装.NET组件来完成一些工作。该解决方案运行良好,我们的团队负责人希望确保它在负载下运行良好,因为这是我们第一次在我们的网站上使用.NET组件。如何正确加载测试Web服务器上的新组件?
我需要考虑做一个适当的测试,以确保我引入的新代码不会在负载下中断?
我已经在做什么:
我做了一个简单的ASP网页调用基于查询字符串信息的新组件。查询字符串也有一个“off switch”参数,所以我可以在没有组件的情况下测试页面作为默认值。除了返回表示组件是否成功,失败或被跳过的值之外,页面本身是裸露的。
我写了一个简单的控制台应用程序,它使用HttpWebRequest
在每次调用时使用来自数据库的唯一数据对ASP页进行迭代调用。它所做的一切,并检查页面返回的值并保存数据。
然后,我将控制台应用程序部署到我们内部网络上的四台不同PC上。在一次测试中,我在每台计算机上设置了一个应用程序实例,而在另一个实例中,我在每台计算机上设置了五个应用程序实例,并将它们配置为同时开始同时启动开发服务器。每个应用程序实例向Web服务器发出150次迭代请求。
对于每个场景(每台机器上一个实例&在每台机器上有五个实例),我运行了两次测试,一次没有调用组件,一次调用组件。在这两种情况下,被调用的组件的性能比未调用该组件时花费的时间大约是完成请求的2.2倍。考虑到我们正在处理的大量处理以及数据库更新数据的次数,我们认为这并不是很昂贵。另外,因为在我们用4个并发连接访问服务器的情况下,以及当我们用20个并发连接访问服务器的情况下,2.2x比率看起来都很合适,所以似乎运行正常。
20个实例的测试肯定会给我们的开发服务器带来很多负载,无论是否运行新组件,但新组件在压力下看起来都不错。但是,我想确保我以正确的方式进行操作,并没有指出通过弱测试的正面过程来证明我的组件在高峰负载下不会使服务器满足其需求。
感谢您的答复。我测量完成请求的平均时间,所以我想你可以说我每秒测量的请求数。我想我的观点是,在重负荷和轻负荷下,引入我的组件可以将响应时间增加相同的百分比。 – 2010-07-29 02:30:02
另外,是不是测试组件只在VS 2010终极版,这是$ 10,000 SKU?我记得理查德在dotNetRocks Road Show上做了一个很酷的演示。 – 2010-07-29 02:31:00
它也是在2008年的测试版。 具有相同的比率表明这是一个可预测的努力量,这是一个相当好的迹象,但最终的衡量标准将在绝对条件下“花费太长时间”,无论持续多久。如果你真的敲击了组件,它仍然以X秒作为响应(无论你认为响应时间需要多长时间),你可以给它一个“勾号”。 – Nat 2010-07-29 21:55:50