我们有一个基于浏览器的应用程序,该应用程序基于Microsoft Stack构建,特别是.NET 3.5。它还使用Ajax,iframe,jQuery等。
目前,我们只是在猜测应用程序/服务器体系结构可以提供的并发速率。这使每个人都感到紧张,因此得出一个更准确的数字真的很好。并发性是指一次登录的X个用户。具体来说,我需要知道在用户体验真正恶化或服务器崩溃之前,服务器/应用程序可以容纳多少并发用户。
是否有任何简单的工具/服务可用于获取这个信息?
我以前没有进行性能/负载测试的经验,因为它总是由专业人士完成。这是需要几个月的学习/设置工具的事情吗?
#1 楼
性能测试工具很多:Apache Bench
Grinder
Siege
Pylot
大部分都很容易。您可以在本地VM上运行每个软件包。但是,如果要模拟大量流量,则需要有一台具有更多RAM和处理器的计算机。
由于这是AJAX应用程序,因此可能必须模拟磁盘上的资源争夺。功能测试可能会为您完成此任务,但是如果您对服务器和堆栈如何响应感兴趣,则如何设计负载请求非常重要。
评论
我发现不仅仅是在机器上增加电源,还发现如果可能的话,一次运行多台机器很有用。来自1台计算机的请求太多,我发现结果变得偏斜。
– Lyndon Vrooman
2011年5月12日15:48
很好的一点。
– terryp
2011年5月12日15:51
#2 楼
您不应该关注并发率,而应该尝试获取流量统计信息,例如访问次数,活动量等等。如果已经有站点在运行,则可以分析服务器日志或应用程序可能编写的任何审核记录。当您的站点仍处于离线状态而只是想上线时,您必须对流量有所期望。这些数字将使您了解如何模拟。
但是,如果我提出的问题正确,那么您正在寻找一种方法,可以从应用程序中获取可能的最大吞吐量,以了解可以期望的结果,而不是附带数字并尝试证明自己可以数字化。是吗?
这基本上需要进行性能测试,您必须首先设置期望值:
什么是可接受的性能(响应时间限制)
该应用程序的标准方案是什么,您期望什么样的使用模式
根据这些用法模式,您可以期望什么样的数据增长
一开始您的标准部署方案是什么,您想要什么硬件(因为您尚不知道,需要什么,您必须先设置一些东西)
基于此,您可以开发性能方案并运行它。如果您以前从未进行过测试,则不应期望找到问题的答案,而应该在应用程序周围发现大量问题。解决此问题后,您将得到一个问题的答案并得到一个想法,而不是一个固定的数字。
您可能还会喜欢我的那篇关于获取负载测试数字的文章,其中包括有关并发性的一些想法: http://blog.xceptance.de/2011/06/07/get-the-right-load-mix-out-of-a-few-numbers/这是一个以电子商务为中心的...但可能仍会给您带来帮助一个想法,您可能需要什么,或者没有数字就可以做什么。
#3 楼
当您使用Microsoft堆栈时,我必须推荐Microsoft Visual Studio工具套件。 Visual Studio随附的负载测试工具将挂接到包装盒上的性能计数器中。这些工具包括来自asp.net团队的指导,当达到某些阈值(如发生大量垃圾收集)时,以关键警告的形式出炉。您还应该研究Microsoft的模式和实践有关ASP.net性能的文档,因为其中存在许多有关性能问题的良好指导。
#4 楼
我曾在VSTT工作,并为OLTP应用程序进行了性能测试。 VSTT提供了有关Web测试,负载测试的良好信息和文章Visual Studio性能测试快速参考指南(2.0版)已发布
性能测试视频已发布到CodePlex
评论
只是一条评论。快速参考指南的最新版本为3.6,可在此处找到:vsptqrg.codeplex.com
–山姆·伍兹(Sam Woods)
2011年11月8日19:46
#5 楼
JMeter是一种开源性能测试工具,在这种情况下可能会有用。当然,肯定会有一些时间来学习如何使用该工具,以及一般性能测试教育(最佳实践等)所需的时间。#6 楼
我认为简单的Google搜索可以为您提供大量的工具,这些工具可能会有所帮助,但是您无需在明确目标和要求之前就对它们进行研究。我相信您真正要问的是“操作方法”,而不是工具列表。因此,我将尝试以这种方式回答。是否有任何简单的工具/服务可用于获取此信息?
我以相同的问题开始,并得出以下结论:
不,没有捷径。
因为要从性能测试中得出结论-您需要确定最重要的业务指标。我们公司位于网络应用程序中,具有以下关键指标或KPI(关键绩效指标):
页面加载时间
否。每次调用都运行查询数量
最慢查询
内存使用情况
一旦确定了这些指标,就应该分析并解决性能测试期间发现的瓶颈,然后继续进行负载测试或并发。
注意:我并不是说工具无济于事,而只是使工作变得更容易-必须首先确定基础结构和规则。
#7 楼
好吧,这些天来我是一个快乐的Selenium用户。我看不到您无法使用Selenium进行负载测试的任何理由,尽管您需要发明数据收集和汇总机制。尽管如此,还是值得的,因为Selenium对于各种自动化测试都是有用的。评论
Selenium并不是真正的性能测试系统(尽管它可能会被滥用)。如果要使用Selenium作为负载测试工具,则将需要大量硬件,或者需要使用诸如酱料实验室(saucelabs.com)之类的工具。我建议您最好走JMeter路线!
– Ardesco
2012年3月1日15:45
#8 楼
除了上述工具和建议之外,您还可以尝试使用Tsung(开源多协议分布式负载工具)进行负载/压力测试活动。Tsung的目的是模拟用户以测试基于IP的客户端/服务器应用程序的可伸缩性和性能。
要注意的主要功能是:
Tsung用Erlang编写,用于充分利用该语言的并发支持:Tsung不会像Passport那样快地驱动负载,但是即使被测系统无法应对,每秒也会发送定义数量的请求,因此您可以暴露bottlnecks。
Tsung的扩展性很好(它已被用来模拟成千上万的用户)。
使用SNMP,munin-node代理或Erlang代理在远程服务器上进行OS监视(CPU /内存利用率,网络流量)。
Tsung支持表单和HTTP会话,其中包括代理记录,“ thinktime”支持以及一些随机或有序t
Tsung是一种分布式负载测试工具,根据GPLv2许可可作为开源软件产品免费使用。
Tsung与协议无关,可用于强调HTTP,WebDAV, SOAP,PostgreSQL,MySQL,LDAP,Jabber / XMPP服务器。
您可以在工具的网站上找到详细的说明。
Tsung可以为每个服务器模拟大量用户,使其成为分析和测试大型应用程序(例如即时消息解决方案)性能的理想选择。
几个好的指南和要点:
•测试您的性能和可伸缩性带有Tsung的Web应用程序
•使用Tsung进行负载测试Rails或Web Apps
•Tsung安装
•Tsung ProcessOne页面
就我而言,我已经成功使用了它用于项目上的负载测试和压力测试Web服务。 Tsung初次使用可能会有些棘手,但在进行高并发测试的情况下确实有效。
#9 楼
我不确定是指“并发用户”还是“并发用户”,但是当您使用多个活动会话时,似乎要解决与网站的“速度”,“可扩展性”和“可靠性”相关的风险和服务器资源正在同时使用。在不同的时间需要进行不同类型的性能测试,以验证应用程序中的不同场景/问题。在下面的URL中,我试图区分多种类型的性能测试。虽然这不是标准定义,但我已尽力与他人保持同步。http://rgsoftwaretesting.blogspot.in/2011/01/performance-testing-types.html
从工具集的角度来看,以下是我使用过的一些工具的列表,这些工具非常有用:
JMeter-一个开源工具,但很难学/ use。
BlazeMeter-基于云的工具,使用JMeter脚本并满足Internet带宽要求。云中的每个实例都连接有100Mbps / 300 Mbps的线路。
BrowserMob-基于云的硒网格工具,非常易于使用和学习
VSTS-Microsoft许可的工具,价格合理
NeoLoad-获得许可的工具,易于使用和学习,支持flash / flex
LoadRunner-获得许可的工具,非常昂贵,但支持多种协议,
由于您的应用程序是基于Microsoft Stack开发的,因此可以使用'Perfmon从多个服务器收集性能计数器,并将其关联以进一步分析。所有获得许可的工具都固有地支持从多个服务器收集这些性能计数器,并为关联和报告提供了非常简单的界面。
评论
请注意,性能测试的含义要广泛得多(汽车的0-100,网络吞吐量等)。更好地使用诸如网站“网站/应用性能测试”之类的内容IMO,“负载测试”充分阐明了意图。您可以看一下Amazon Web服务,人们讨论使用EC2来生成多个击中您站点的“用户”,但是您需要一个外部测试站点。
您是在说“并发用户”还是“同时用户”?两者的不同之处在于,并发是用户大致同时单击相同的按钮,而同时是在同一时间都在站点上但可能在不同区域执行不同任务的用户。