如何客观地衡量服务器上应用程序的负载

如何客观地衡量服务器上应用程序的负载

全部,

我甚至不确定从哪里开始寻找资源来回答我的问题,并且我意识到对这种事情的猜测是非常主观的。

我需要帮助来确定我应该购买哪种类型的服务器来托管 Windows Server 2008 平台上带有 MSSQL 服务器后端的 MS Silverlight 应用程序。这是一个交互式程序,所以我不能简单地生成一个 URL 列表来测试,然后让 1000 个用户同时运行它。

有哪些工具可以帮助我确定应用程序在不同并发用户级别上对服务器施加什么样的负载?

你们是否建议将 SQL 服务器与 Web 服务器分开,以便更好地区分堆栈不同部分产生的负载?

答案1

即使 Silverlight 托管在客户端,它仍然会回调您的服务器以获取数据并可能进行一些处理。

您不应该思考 Silverlight 与典型的 Web 应用程序有何不同,而应该考虑它们有何相似之处(这是有效的,因为现在很多 Web 应用程序都使用 AJAX,在某些情况下,AJAX 向服务器发出的请求比旧的 postbak Web 表单更多)。

无论如何,首先对应用程序进行建模,看看它会产生什么类型的流量到服务器。使用 Fiddler 之类的工具来查看在典型用例期间会发生什么类型的流量。这将让您了解正在调用什么类型的 Web 服务以及如何调用它们。

从这里您可以开始构建模拟对这些 Web 服务的调用的测试脚本。

你的第二个问题很难回答,因为它取决于很多因素。你必须做一些测试才能知道哪种方法最有效。

答案2

我实际上没有使用 Silverlight 的经验,但对于这个问题,一般来说有很多可行的选择。我们大多数人仍然倾向于依靠反复试验 + 直觉。

LoadRunner 有点像祖父级的软件,但是如果你必须问的话,它超出了你的预算。

Keynote 有一款免费下载的工具,名为 KITE。启动它后,在里面启动 IE 浏览器,执行您认为用户会执行的任何操作,然后将录制的会话保存为脚本。然后,您可以将该脚本上传到他们的服务器网络,并付费让他们快速运行该脚本。他们还会努力让您付费让他们帮助您编写脚本。从这个意义上说,他们是一家“企业级”供应商,因此需要预算才能真正实施解决方案。

Gomez 有类似的服务,我也不太清楚细节。它更注重效用率,即按批量交易购买。它们可能更便宜,但同样是“数千”的心态。

Selenium 是一款免费/开源工具,其使用方式与 KITE 类似,但您必须自行配置集群/客户端/报告等。其中一位开发人员还运行 Browser Mob,它基本上会以低廉的价格在其负载服务器上为您运行 selenium 脚本。

这些对于甚至复杂的 ajax 应用程序来说都是很好的,但老实说,我对 Silverlight 了解不够多,无法判断它们是否会起作用。

就像我前面说的,我们大多数人仍然在即兴发挥。尽早设置非常仔细的监控和指标收集,并在用户采用系统时进行趋势分析。开始制定粗略的比率指标,以确定每个 CPU 或每 GB 内存可以同时激活多少用户,或者与每秒有多少个 SQL 请求相关,等等。这可以帮助您预测用户容量,向您显示最耗资源的用户,并向您显示由于您所做的更改而导致指标突然在图表上飙升的情况。

相关内容