大小调整和容量规划提示和操作方法

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

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

然而,这种方法存在许多问题。客户端通常使用不同的硬件和软件平台。他们从我们这里购买的产品集通常永远不会相同,并且通常应用程序的某些部分是根据特定客户的订单构建的。考虑到软件版本正在更改等,并且有很多参数会使大小调整任务变得非常困难。

我研究了一些关于这个主题的书,有些建议使用复杂的数学模型。这些方法作为输入所需的参数数量(例如应用程序功能的详细分类)使我认为这些参数几乎没有用处。硬件通常在定义基本要求之前就已排序,更不用说这些需求在整个应用程序开发和生命周期中会有所不同。那么,您如何进行大小调整和容量规划呢?任何提示和操作方法都值得赞赏。


答案 1

在你给出的描述中没有简单或数学公式来预测规模,如果你(或你的公司)认真对待这一点,那么最好的方法是建立一个性能和可扩展性测试环境,在那里你可以轻松设置和拆除各种客户端配置,并向它们发送负载,看看它们将如何做。因为您正在构建自定义组件,所以一个写得很差的组件或缺少索引可能会使所有内容都搞砸,因此,在将此类环境提供给客户端之前,您可以先解决这些问题。拥有这种类型的环境后,您可以将内存和CPU添加到应用程序服务器和数据库中,以查看应用程序如何扩展。

我建议使用一个VM环境,他们可以根据应用程序的需要轻松添加CPU和内存,并使用watchmouse或browsermob等服务进行一些真实的外部负载/规模测试。


答案 2

如果必须在定义基本要求之前订购硬件,那么,您所能做的最好的事情就是通过查看一组类似项目的安装基础来大致确定容量(就像您现在正在做的一样)。随着现有客户安装的增长,跟踪他们在扩展和容量需求方面的体验,如果您有足够大的基础,则可以通过将具有类似硬件的类似项目分组并查看容量需求来进行粗略的曲线拟合。观看现有客户的容量需求在增长过程中如何变化,以及了解其他数据点。

理想情况下,最初的硬件/软件购买是用于试点安装,一旦启动并满足规格,您就可以对试点设置进行基准测试。使用这些结果来预测从试点到生产的产能需求。当然,这需要在从试点到生产的计划中花时间对应用程序进行基准测试,然后订购并接收设备。但它将给出比预先完成所有操作更准确的容量估计。


推荐