这是我前几天被问到的一个棘手的问题......我们正在开发一个非常复杂的电话(SIP)应用程序,其中包含混合的C++和PHP代码以及MySQL数据库和几个开源组件.
一位电信工程师要求我们估算应用程序的性能(尚未准备好).他说得很好,你知道每秒可以通过Linux内核传递多少数据包,而且你可能知道你的应用程序有多快,所以告诉我每秒会有多少通过你的东西的电话'.
对我来说似乎是无稽之谈,因为可能会发生一百万个场景(好吧,字面意思......)
但是......有没有办法在实际测试之前估算应用程序性能(知道它将运行的硬件,能够在其上运行标准基准测试等)?
您当然可以将问题限制在上限(最大吞吐量)限制.这没什么废话.事实上,不知道这些东西表明了一个非常随意的问题方法 - 特别是在电话世界.
您可以自己解决问题 - 您必须在交易中完成的最小"工作"或您在应用中的任何任务单元?
例如,一些消息往返,一些处理和数据库命中?获取有关各个部分的信息将使您了解最快的吞吐量.如果您加载系统并看到性能显着降低,那么您可以花些时间找出可能因低效算法而丢失吞吐量的位置等.
编辑
要完成此练习,您需要了解应用为每个用例执行的所有步骤.然后,您可以确定每个用例的最大吞吐量.你应该在发布和上线之前知道这些东西.
我忽略了最糟糕的案例分析,正如你所指出的那样 - 是相当困难的.