有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java大小调整和容量规划技巧及方法

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

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

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

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


共 (3) 个答案

  1. # 1 楼答案

    如果应用程序以优雅的方式水平扩展,粗略的初始估计可以作为起点。一旦应用程序投入生产,根据需要添加或删除额外的框应该很容易

  2. # 2 楼答案

    在你给出的描述中,没有简单的数学公式可以预测规模,如果你(或你的公司)对此很认真,那么最好的方法就是建立一个绩效评估体系;可扩展性测试环境,您可以轻松设置;拆除各种客户端配置,并向它们发送负载,看看它们将如何工作。因为您正在构建自定义组件,一个写得不好的组件或缺少索引可能会把一切都搞砸,所以在这样一个环境中,您可以在向客户提交之前解决这些问题。一旦你有了这种类型的环境,你就可以添加内存&;cpu连接到应用服务器&;数据库,以查看应用程序的扩展方式

    我建议使用虚拟机环境,这样他们就可以轻松地添加cpu&;基于应用程序需求的内存,以及使用watchmouse或browsermob等服务进行的一些实际外部负载/规模测试

  3. # 3 楼答案

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

    理想情况下,最初购买硬件/软件是为了进行试点安装,一旦试点安装完成并符合规范,您就可以对其进行基准测试。使用这些结果来预测从试点到生产的能力需求。当然,这需要在试生产计划中留出时间来对应用程序进行基准测试,然后订购和交付设备。但它将给出比预先做所有事情更准确的产能估计