手头的问题是我们进行压力测试,容量测试,性能回归测试等环境.
辩论的一方是一些软件工程师,希望这个环境尽可能地反映生产环境,以使结果尽可能有意义.虽然我们目前确实有一个这样的测试环境,但它比生产系统的能力要差得多,而且这些软件工程师觉得他们已经达到了可以从中学到的东西的极限.
辩论的另一面是一些网络工程师,他们管理环境并控制钱包.虽然他们承认在环境中生产环境更好的能力测试会更好,但他们认为 – 为了压力测试的目的 – 更温和的环境将会影响放大性能瓶颈,使其更容易发现和修复.
这最终使我们引起了我的兴趣:一位软件工程师表示,虽然更温和的压力环境会增加您遇到一些瓶颈的可能性,但并不一定会有助于您找到下一个瓶颈在生产中遇到.他认为,缩放效应可能不是线性的.
有这个观点有价值吗?是的,那为什么?这种非线性的来源是什么?
这里涉及很多移动部件:一组Java应用服务器,一组数据库服务器,为每个HTTP命中生成大量动态内容.
编辑:我感谢大家的想法到目前为止,但我真的希望有人会做一个更重要的一面或另一个,实际上解决“为什么”的问题.如果有这样的非线性,是什么引起的呢?更好的是,如果原因是用cpu,内存,带宽,延迟,子系统之间的相互作用来表示的话,那么你会有什么… TerryE,你已经来得最近了.如果没有人加紧,你应该重新发布你的评论作为赏金的答案
解决方法
然而,适度的系统是一个精确的规模模型,在生产系统的所有细节中我难以相信.
这是一个具体的例子.让我们说,生产系统上的测量表明cpu利用率(cpu不空闲的时间百分比)太高.因此,您将软件放在适度的系统上,并进行测量并发现在适度的系统上,cpu利用率较低.调查显示,适度的系统具有较慢的存储空间,所以cpu花费更多的空闲时间等待从存储到完成的数据传输,因为应用程序是I / O绑定在不适用于生产系统的适度系统上.这种差异是由于中等程度的机器不是生产机器的精确比例模型,因为cpu比率不同于I / O传输比.
另一个例子是在生产环境中拥有更多的内存,减少页面错误.当软件加载到更温和的机器上时,由于物理内存较少,存在更多的页面故障.随着各种应用程序分页输入和输出,它们开始相互影响,因为其他应用程序的页面被换出,然后再次交换回来.在具有较大内存的产品机器上,由于存在足够的内存以同时容纳更多应用程序,因此不会看到此级联页面故障行为.
我真正想在这里做的一点是,具有各种部件和应用程序的计算机是一个复杂而动态的系统.一个计算环境只是另一个计算环境的尺度模型的想法太简单了.使用适度的系统当然可以提供有价值的数据.然而,一旦对软件进行了重大调整,并且您开始进行更细微的详细调整,那么环境的差异可能会对测试结果产生很大的影响.
一些引用.
由Tod Mytkowicz,Amer Diwan和Elizabeth Bradley提供Computer systems are dynamical systems.
Uri Lerner,Ronald Parr,Daphne Koller和Gautam Biswas的Bayesian fault detection and diagnosis in dynamic systems.