跳转至主要内容
我想扩展一下Paul最近的博客"你的生产前测试有效吗?"。Paul介绍了CPU利用率和代码路径,但很多应用还有一个非常重要的方面--网络利用率。许多应用程序都是在局域网环境中测试的,延迟在亚毫秒范围内,带宽至少在100 mbps。然后,它们被部署到带宽更小、延迟更高的广域网中使用。其结果可能是一场灾难。
虽然在局域网环境中的测试会发现大多数网络相关的错误,但可能会有一些与丢包或意外的分段有关的错误(TCP不会维护你的消息边界),你在局域网环境中不太可能看到。在快速的局域网环境中,你也不太可能注意到一个不太理想的设计,而在缓慢的广域网环境中。因此,在最坏的预期网络环境下测试任何基于网络的应用是非常重要的,低带宽,高延迟,不要忘记丢包率。
有两种方法可以做到这一点。
首先是使用实际环境。将服务器(或客户端)放在网络中的主机上,看看它是如何工作的。这样做的好处是使用实际的基础设施。缺点是你无法控制环境,当你试图复制一个问题或测试一个错误修复时,这一点至关重要。
二是使用广域网模拟器。有只用硬件和软件的,有商用的,也有开源(免费)的模拟器。这里的优点是,你可以完全控制延迟、丢包率和其他网络参数,而且你不必让其他组参与(即把你的软件放在别人的系统上)。缺点是成本和学习曲线。即使你使用免费软件,你也必须提供一个系统(通常是一些Unix的味道)来运行它,并学习如何使用它。几年前我写了一篇关于Dummynet的教程。当时它是为数不多的免费模拟器之一。现在还有很多,只要在谷歌上搜索"wan模拟器"。
根据我研究性能和应用程序故障问题的经验,我相信这种测试将在减少因错误而导致的生产中断和提高应用程序及其用户的性能方面得不偿失。

© 2024Stratus Technologies.