我们有一个基于Windows的客户端 - 服务器应用程序,其中服务器位于远程位置,并且正在从位于另一个位置的客户端访问它,该数据库用于此SQL Server。 我想对此应用程序进行性能测试,我该怎么做?有没有可用的工具? 请建议
答案 0 :(得分:1)
让我们谈谈您的要求:您注意到性能测试,您成功或失败的核心关键指标是什么?您是否为应用程序提供了业务功能,用户数量及其出现频率的负载配置文件?通常,日志文件或数据库中记录的更改可以提供业务操作频率的客观度量。
要求问题直接涉及您对绩效的询问。您是否对从 a 到 b 位置的网络响应时间的差异感兴趣,<时间<强> sql 会话从a到b完成,还是最终用户的响应时间相同?这是在负载下测量,还是仅在这个远程位置的单个实例测量?您如何考虑远程客户端和服务器之间复杂网络中不受控制的元素,这对影响测试的重现性程度如何?或者,它是否足以将一个“嗅探器”跟踪用于查看请求的最后一个字节的时间到一定数量的样本的响应的第一个/最后一个字节的时间?
根据您的要求,可能需要使用不同的工具,从协议分析器等被动工具到网络的主动测试工具,数据库事务甚至驱动前端客户端。
答案 1 :(得分:0)
您可以在服务器上运行性能监视器。只需添加适当的计数器(SQLServer.Transactions等)。您还可以将收集的信息保存到日志文件中。 请查看此链接了解详情:Understanding SQL Performance Counters
您还可以将PerfCounters集成到您的应用中。阅读:Performance Counters in the .NET Framework
以下是如何将PerfCounters添加到应用程序的简单示例:
string category = "My Category", counter = "My Counter";
if (!PerformanceCounterCategory.Exists(category))
{
var ccd = new CounterCreationData(counter, "", PerformanceCounterType.NumberOfItems32);
var ccdcol = new CounterCreationDataCollection() { ccd };
PerformanceCounterCategory.Create(category, "", PerformanceCounterCategoryType.SingleInstance, ccdcol);
}
//else
// PerformanceCounterCategory.Delete(category);
var pc = new PerformanceCounter(category, counter, false) { MachineName = ".", RawValue = 0 };
for (int i = 0; i < 10; i++)
{
pc.RawValue = i;
Thread.Sleep(1000);
}
答案 2 :(得分:0)
我喜欢HP's Performace Center 我确定有others