Dan*_*Dan 15 java hardware capacity-planning sizing java-ee
我经常被要求为我们的客户执行规模调整和容量规划.当我们的客户购买我们的产品(基本上是J2EE Web应用程序)时,他们经常会询问运行这些产品所需的硬件.我们的建议通常会导致高成本的硬件采购.
到目前为止,我开发的最佳启发式方法是将利用率预测(应用程序应注册的已注册和并发用户数)与我们现有安装中收集的数据进行比较.例如:如果安装A使用X硬件参加100个并发用户,那么安装B将需要2*X硬件来参加200个并发用户.
然而,这种方法存在许多问题.客户端通常使用不同的硬件和软件平台.他们从我们这里购买的产品通常是不一样的,通常部分应用程序是根据特定客户的订单构建的.考虑到软件版本正在改变等等,并且有如此多的参数可以使调整任务非常困难.
我研究了一些关于这个主题的书,有些人建议使用复杂的数学模型.这些方法需要作为输入的参数数量(例如应用程序功能的详细分类)让我觉得这些参数几乎没用.硬件通常在定义基本要求之前订购,更不用说这些在整个应用程序开发和生命周期中会有所不同.那么,您如何进行规模调整和容量规划?任何提示和如何赞赏.
如果必须在定义基本要求之前订购硬件,那么您能做的最好的事情就是通过查看一组类似项目的安装基础来估算容量(就像您现在所做的那样)。跟踪现有客户在扩展安装时的扩展和容量需求经验,如果您有足够大的基础,您可以通过将具有类似硬件的类似项目分组并查看容量需求来进行粗略曲线拟合。观察现有客户容量需求在增长过程中如何变化以及其他数据点。
理想情况下,最初的硬件/软件购买是为了试点安装,一旦试点设置启动并符合规范,您就可以对试点设置进行基准测试。使用这些结果来预测从试点转向生产的产能需求。当然,这需要在试点生产计划中花时间对应用程序进行基准测试,然后订购并接收设备。但与预先进行所有操作相比,它可以提供更准确的容量估计。