容量规划确定系统是否可以处理负载

时间:2010-09-06 18:39:58

标签: performance load-testing capacity-planning prediction

假设一个基于Java EE的电子商务网站表现良好,可以提供预期的响应时间和吞吐量。该网站正在进行重大的ui更改,预计将带来3倍的流量。

如何确定现有环境是否可以处理预计的网络流量?

如果我有系统利用率(CPU,内存利用率),吞吐量,现有系统的响应时间,是否可以使用某些经验公式找到它而无需实际负载测试系统。 (目标是确定在设计阶段是否可以满足SLA)

2 个答案:

答案 0 :(得分:0)

没有这方面没有公式,相互依赖的因素太多了。获得实际数字的唯一方法是通过实证检验。如果你不能做到这一点,那么你唯一的选择就是选择硬件产能过剩,做一个有根据的猜测,就像这样:

  • 新UI是否会影响CPU使用率?
  • 呈现和转移页面需要更长时间吗?估计并发性的增加。
  • 更多流量还意味着更多数据吗?如果是,这对性能有何影响?
  • 是否存在可能导致并发性意外增加的瓶颈?
  • 增加的并发性如何影响内存使用?
  • 内存使用情况如何影响文件系统缓存,数据库缓存,JPA缓存等
  • 性能IO是否受约束?剩余容量有多少?
  • 性能CPU是否受约束?剩余容量有多少?
  • 你有多少内存备用容量?

答案 1 :(得分:0)

我部分不同意之前的回答。 当然,任何容量规划都涉及创建具有一组(潜在危险的)假设的模型。

尽管如此,拥有良好的历史视角:

  • 事务负载(例如Apache日志上的网络点击)

  • CPU和内存利用率

可以构建负载性能分析,以通过分析统计技术确定“服务需求”(粗略地说,用于处理单个请求的资源量)。 然后可以将相同的参数馈送到排队网络模型中,以估计预期的响应时间和吞吐量(在高资源饱和度下,其行为可能变为高度非线性)。

尽管如此说:    - 这不是一个简单的公式

  • 您需要假设新UI的效果是3X负载生成而没有其他任何内容(对请求的服务需求相同,效率相同)

  • 您冒着遇到非模型可能瓶颈问题的风险(例如饱和连接池,网络带宽......)这是容量规划的一般问题。

测试是唯一安全的选择,不幸的是,这是一个不可用的选项。