客户在相当大的负载下运行集群 Web 应用程序服务器。他想知道即将推出的尚未实施的应用程序是否仍可通过他当前的设置进行管理。是否有一种既定的方法可以基于现有的需求规范(或者可能是功能设计规范)来预测概念状态下应用程序的性能影响。首要任务是预测对 CPU 资源的影响。
有可能得到相当准确的结果吗?
客户在相当大的负载下运行集群 Web 应用程序服务器。他想知道即将推出的尚未实施的应用程序是否仍可通过他当前的设置进行管理。是否有一种既定的方法可以基于现有的需求规范(或者可能是功能设计规范)来预测概念状态下应用程序的性能影响。首要任务是预测对 CPU 资源的影响。
有可能得到相当准确的结果吗?
我会说规范的答案是否定的。您始终必须对部署在其目标架构上的实际应用程序进行基准测试。
为什么?软件和软件开发是不可预测的。而且系统更加不可预测。
即使您现在知道需求并进行了深入分析,如果出现以下情况会发生什么:
这些担忧不是理论上的。如果是这样,软件开发将是微不足道的,项目将始终按时交付并符合预算。
但是,您可以应用一些我个人使用的启发式方法。首先,您需要对当前系统有一个非常好的了解:
执行分析以获得 CPU、RAM、磁盘和网络方面的“平均”小型、中型和大型“成本”。这将是以下形式:
从这个分析中,您应该了解您有多少余量——当然是 CPU,但请检查是否有足够的 RAM、网络和磁盘容量。例如,小事务所需的 CPU 是每秒小事务的数量乘以小事务的 CPU 成本。加上中型交易和大型交易的 CPU 成本,您就有了 CPU 预算。
确保 DBA 参与其中。他们需要在数据库上做同样的事情。
现在您需要分析即将到来的应用程序:
就个人而言,您被要求预测不可预测的事情 - 将您的名字和声誉置于危险之中。如果您说它适合,那么您将承担大型软件开发项目的风险。如果您被迫说是,您需要确保与您的姓名一起涉及许多其他人的姓名 - 并且这些姓名都应该在“去/不去”决定中可见。这不仅更有可能确保考虑到所有因素,并且分析是合理的,而且还将确保该项目有许多参与其中的个人与其成功保持一致。