2

我的任务是构建一个应用程序,其中业务用户将定义许多用于数据操作和处理的规则(例如,取一个数值并将其平均分配给根据规则中指定的条件选择的多个记录) .

每月必须运行一个批处理应用程序,以便按照定义的规则处理大约 50 万条记录。每条记录大约有 100 个字段。环境是带有第三方规则引擎的 .NET、C# 和 SQL 服务器

如果要求在大约 8 到 10 小时的时间范围内处理记录,您能否建议如何定义和/或确定最适合哪种硬件。如果用户想要根据硬件成本增加或减少时间范围,规格将如何变化?

提前致谢

艾比

4

3 回答 3

1

步骤 0. 创建应用程序。不可能像您从“纸质”规范中描述的那样判断多计算机系统的真实世界性能...您需要尝试一下,看看什么是最大的减速...这通常是物理 IO,但是不总是...

步骤 1. 在隔离环境中使用样本数据集进行概要分析。这是一个指标。您不是试图隔离需要时间的因素,只是衡量运行规则所需的总时间。

隔离环境是什么意思?您希望在机器之间使用相同类型的网络硬件,但不允许该网段上的任何其他流量。这在这一点上引入了太多变量。

简介是什么意思?使用当前的硬件,测量在以下情况下完成需要多长时间。 编写一个程序来自动生成数据。

场景 1. 1,000 条最简单的规则。

场景 2。您可以合理地期望用户输入的 1,000 条最复杂的规则。

场景 3 和 4。10,000 最简单和最复杂。

场景 5 和 6。25,000 最简单和最复杂

场景 7 和 8. 50,000 最简单和最复杂

场景 9 和 10。100,000 最简单和最复杂

步骤 2. Anaylze 数据。

查看完成时间是否有趋势。弄清楚它们是否似乎与规则的数量密切相关,或者复杂性是否也考虑在内……我认为会的。

制定一条趋势线,显示如果有 200,000 条和 500,000 条规则,您预计需要多长时间。在 200,000 处再运行一次。查看趋势线是否正确,如果不正确,请修改您开发趋势线的方法。

步骤 3. 在系统处理 20,000 个规则集时测量数据库和网络活动。看看是否有更多的规则发生更多的活动。如果是这样,您越加快进出 SQL 服务器的吞吐量,它运行的速度就越快。

如果这些“相对较低”,那么 CPU 和 RAM 速度可能是您想要增强所请求的机器规格的地方......

当然,如果所有这些测试的成本要比购买最强大的服务器硬件成本更高,那么只需量化测试所花费的时间成本与购买最好的服务器并完成它并仅调整您的应用程序和您控制以提高性能的 SQL...

于 2009-12-15T02:14:40.827 回答
1

创建应用程序和配置文件吗?

于 2009-11-12T18:05:05.327 回答
0

如果这个系统不是第一个,那么你可以考虑以下:

  • 重用(经过额外评估后)以前项目的硬件要求
  • 根据现有应用程序的工作负载和硬件配置评估硬件要求

如果不是这种情况并且性能要求非常重要,那么最好的方法是创建一个原型,例如,实施 10 条规则。使用原型处理数据集并推断为完整的规则集。根据此信息,您应该能够得出初始性能和硬件要求。然后,您可以根据已处理数据量的计划增长、可扩展性要求和冗余来微调这些规范。

于 2009-12-11T05:31:40.360 回答