【问题标题】:SQL Server 2008: The reasonable stress tests scenarioSQL Server 2008:合理的压力测试场景
【发布时间】:2011-03-31 08:51:41
【问题描述】:

我正在使用 JMeter 在 SQL Server 2008 上执行压力测试。

我希望改进一个每秒必须处理 20 个请求的存储过程。

该过程接受一个 xml 参数并返回一个 xml 结果。

我应该只使用一个参数值还是测试多个场景?

我的主要疑问是:

  1. 重新编译过程执行计划(这可能会减慢过程)
  2. 从磁盘中提取数据(并非所有必要的数据都保存在主内存中)

【问题讨论】:

    标签: sql-server sql-server-2008 jmeter stress-testing


    【解决方案1】:

    在 SQL Server 中设计一个现实的压力测试/负载测试是一门艺术。

    有许多因素会影响性能:

    • 硬件:您需要针对已定义目标的相同硬件运行测试(每秒 20 次调用)。这包括磁盘配置、冗余、集群……这并不总是可行的,因此您需要使其尽可能接近,但是您的测试环境变得越不同,结果就越不切实际。这意味着,例如,如果您使用 2 个 CPU 而不是 4 个,则无法相应地调整参数。

    • 数据加载:就您需要测试的记录数而言,理想的情况是表中的最大行数要多出大约 30%-40%。

    • 数据和索引分布:使用预设完全随机数据加载服务器是一个常见错误。 两者都是错误的。值的分布需要是现实的。例如,婚姻状况在所有可能值中的分布并不相同,因此您需要设计数据生成以包含这一点。

    • 索引碎片:这是一个棘手的问题。通常索引会在一夜之间重建,但在一天中,索引会变得碎片化,因此在这些时间里性能可能会有很大差异。

    • 并发负载:服务器每秒可以为您提供 20 个请求,如果它是您对数据库进行的唯一调用,但一旦您开始进行其他调用,它一切都崩溃了。负载需要包括系统的其他相关部分。

    • 操作负载:如果请求都相同,那么每秒进行 20 次调用是绝对没有意义的。您需要使用数据生成技术来使请求现实而不是纯粹随机的。

    如果您使用的是 C#,我在不久前做过这个工具,它可能会帮助您创建 realistic random data

    【讨论】:

    • 非常好的建议,谢谢。我强调的是生产,因此,它是一样的。此外,未改进的存储过程与提供真实数据的测试并行工作。我唯一缺少的一点是操作负载,我现在正在改进。
    猜你喜欢
    • 2011-06-07
    • 2011-03-24
    • 2020-01-19
    • 2014-05-31
    • 2011-08-11
    • 2010-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多