是否有一种技术可以预测应用程序的性能影响

时间:2013-02-27 07:41:37

标签: performance

客户在相当大的负载下运行群集Web应用程序服务器。他想知道即将推出的尚未实施的应用程序是否仍然可以通过他当前的设置进行管理。 是否存在基于现有需求规范(或可能是功能设计规范)来预测应用程序在概念状态中的性能影响的既定方法。 首要任务是预测对CPU资源的影响。

是否有可能获得相当精确的结果?

1 个答案:

答案 0 :(得分:2)

我会说规范的答案是否定的。您总是必须对在其目标架构上部署的实际应用程序进行基准测试。

为什么呢?软件和软件开发是不可预测的。系统更加难以预测。

即使你现在知道这些要求,并且已经深入分析了如果发生了什么:

  • 该程序有性能错误(或两个......) - 甚至可能是第三方库中的错误
  • 添加了新要求或要求更改
  • 分析和设计没有发现组件之间的所有隐藏的相互关系
  • 添加负载有非线性影响,新负载可能会使硬件超过临界阈值(现在的阈值不明显)。

这些担忧不是理论上的。如果是这样的话,软件开发将是微不足道的,项目将始终按时交付并用于预算。

然而,我个人使用的启发式方法可以申请。首先,您需要非常好地了解当前系统:

  • 将现有系统的功能分解为小型,中型和大型,并对硬件上的功能进行基准测试
  • 对这些单独的功能执行负载测试,并尽可能多地捕获事务/秒,CPU成本,网络流量和磁盘I / O数据中的吞吐量,确保您具有小型,中型和大型的表示形式。此负载测试应使系统达到额外负载将减少事务数/秒
  • 的程度
  • 获取当前系统的最大事务数/秒的数字
  • 了解此应用程序的增长率并相应地制定计划

执行分析,以获得CPU,RAM,磁盘和网络方面的“平均”小,中,大“成本”。这将是以下形式:

  • 小额交易
    • CPU利用率:10毫秒
    • RAM开销5MB(缓存)
    • RAM工作:100kb(例如10个并发线程= 1MB,100个线程= 10MB)
    • 磁盘I / O:5kb(数据库)
    • 网络应用< - > DB:10kb
    • 网络应用< - >浏览器:40kb

从这个分析中你应该了解你有多少空间 - CPU肯定,但检查是否有足够的RAM,网络和磁盘容量。例如,小事务所需的CPU是每秒小事务的数量乘以小事务的CPU成本。添加中等事务和大事务的CPU成本,并且您有CPU预算。

确保参与DBA。他们需要在数据库上做同样的事情。

现在您需要分析即将推出的申请:

  • 将每个功能分配到相同的小型,中型和大型桶中,尽可能确保类似的匹配
  • 深入探讨每个功能在峰值时会遇到多少次交易/秒的问题
  • 讨论申请的预期增长率
  • 不要忘记随着数据库大小的增加,系统可能会变慢

就个人而言,您被要求预测不可预测性 - 将您的姓名和声誉放在首位。如果你认为它适合,承担大型软件开发项目的风险。如果你被迫说是的话,你需要确保有许多其他人的名字与你的一起参与 - 这些名字应该在行走/不行的决定中都可见。这不仅更有可能确保考虑所有因素,并且分析是合理的,而且还将确保项目中有许多相关人员亲自与其成功保持一致。