尺寸和容量规划技巧及方法

16

经常被要求为我们的客户进行大小和容量规划。当我们的客户购买我们的产品(基本上是J2EE Web应用程序)时,他们通常会询问需要什么硬件才能运行这些产品。我们的建议通常会导致高成本的硬件采购。

到目前为止,我开发的最佳启发式方法是将使用预测(应用程序应该处理的注册和并发用户数量)与我们现有安装中收集的数据进行比较。类似于:如果安装A使用X硬件处理100个并发用户,则安装B需要2 * X硬件来处理200个并发用户。

然而,这种方法存在一些问题。客户经常使用不同的硬件和软件平台。他们从我们这里购买的产品集通常都不相同,并且通常是为特定客户定制的应用程序的部分。考虑到软件版本正在改变等因素,有很多参数可能使得规模确定变得非常困难。

我研究了一些有关此主题的书籍,其中一些提出了使用复杂的数学模型。这些方法所需的输入参数数量(例如应用程序功能的详细分类)使我认为它们几乎没有用处。通常在定义基本要求之前就已经订购了硬件,更不用说这些要求将在应用程序开发和生命周期中发生变化了。那么,如何进行规模确定和容量规划?任何提示和操作手册都会受到赞赏。


我对你提到的数学模型很感兴趣,不知道你是否推荐过任何相关书籍? - Kenn
3个回答

4
你提供的描述中没有简单或数学公式可以预测规模,如果你(或者你的公司)认真对待这个问题,最好的方法是建立一个性能和可扩展性测试环境,在这个环境中,你可以轻松地设置和拆除各种客户端配置,并向它们发送负载以查看它们的表现。由于你正在构建自定义组件,一个编写不良或缺少索引的组件可能会破坏一切,所以拥有这样一个环境可以帮助你在交付给客户之前解决这些问题。一旦你有了这种类型的环境,你可以为应用服务器和数据库添加内存和CPU来查看你的应用程序的扩展性。
我建议使用虚拟机环境,他们可以根据应用程序的需求轻松地添加CPU和内存,再加上像watchmouse或browsermob这样的服务进行一些实际的外部负载/规模测试。

3
如果必须在确定基本需求之前订购硬件,那么你能够做的最好的事情就是通过查看类似项目的已安装基数来大致估算容量(就像现在正在做的一样)。跟踪现有客户在扩展和容量需求方面的经验,因为他们在增加安装时,如果你有足够大的基础,就可以通过将相似的项目与相似的硬件分组并查看容量需求来进行粗略曲线拟合。另外,观察现有客户在增长过程中的容量需求变化以获取额外的数据点。
理想情况下,初始硬件/软件购买是用于试点安装,并且在达到规格后对试点设置进行基准测试。利用这些结果来预测从试点到生产的容量需求。当然,这需要试点到生产计划中的时间来对应用程序进行基准测试,然后订购和交付设备。但它将比所有事情都在前期完成更准确地估算容量。

0
如果应用程序可以以优雅的方式水平扩展,那么粗略的初始估计就足够作为起点。一旦应用程序在生产环境中运行,根据需要添加或删除其他框应该很容易。

问题是商业上的,而不是技术上的。客户需要事先了解一些初始和总拥有成本的概念。此外,如果您知道确切的产品,与硬件供应商的谈判会更容易。估计过大,客户将被困在他不需要的硬件上;估计过小,您会破坏他的预算,无法与供应商协商等。 - Dan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接