您能否建议如何创建一个测试环境来模拟 Web 应用程序中的各种类型的带宽和流量?
或者也许是一个针对 localhost 的开源程序?
我认为在编写 Web 应用程序时这是一个非常重要的主题,但这不是一个常见的主题,我可以想象创建这种环境的唯一方法是在本地网络中使用某种代理,但在开始研究 squid 之前文档 我想听听您的建议。
您能否建议如何创建一个测试环境来模拟 Web 应用程序中的各种类型的带宽和流量?
或者也许是一个针对 localhost 的开源程序?
我认为在编写 Web 应用程序时这是一个非常重要的主题,但这不是一个常见的主题,我可以想象创建这种环境的唯一方法是在本地网络中使用某种代理,但在开始研究 squid 之前文档 我想听听您的建议。
如果您使用的是 apache,您可能想看看apache ab
有两种方法可以塑造网络流量以模拟网络链接:
(2) 如果您不想在客户端或服务器上安装软件(并且可能影响性能),但需要更多的硬件摆弄,那么(2)是一个更好的解决方案。
您可能需要考虑的其他一些功能是可以模拟哪些整形参数。大多数会延迟和丢包,有些还会抖动和带宽限制。一些解决方案可以选择性地过滤流量(例如通过端口号、TCP 或 UDP 等)。
以下是我发现的一些系统的列表:
开源或免费软件
DummyNet是一个开源的基于 BSD Unix 的专用设备。目前尚不清楚该软件是否正在积极维护
NistNet是用于专用设备的基于 Linux 的开源系统。该软件已经好几年没有得到积极的维护了。
商业的
Apposite Technoligies销售用于模拟 WAN 链接的专用硬件解决方案,以及用于配置设置和收集流量测量的基于 Web 的 GUI
East Coast DataCom销售用于模拟路由器和调制解调器的硬件专用模拟器
Itrinegy提供专用设备解决方案和在客户端或服务器上运行的解决方案。
Network FX 提供多种专用设备产品,用于模拟客户端和服务器之间的网络损伤
NetLimiter是一个客户端系统,允许对单个应用程序进行节流,并包含防火墙。
Shunra Software提供一系列产品,从高端企业 WAN 模拟和测试到简单的客户端驻留仿真器。
我能想到的最接近的是用Shunra的VEDekstop做类似的事情。
Shunra VE Desktop Standard 是一种基于 Windows 的客户端软件解决方案,可模拟广域网链接,以便您可以直接从您的桌面在各种当前和潜在的网络条件下测试应用程序。
不久前我写了一个 php 脚本,它使用 CURL 对我的服务器运行一系列页面请求,这代表了一个典型的使用场景。我让它输出服务器响应每个请求所花费的时间。然后我有另一个脚本,它在一段时间内同时生成了一堆这些测试用例脚本,并将结果关联到一个文件中,然后我可以在电子表格中查看该文件以查看平均时间。通过这种方式,我可以模拟访问我想要的网站的用户数量。限制是您需要在与 Web 服务器不同的服务器上运行测试脚本,并且客户端机器可能会因为负载过大而无法在某个点之后给出有意义的结果。我已经离开了工作,否则我会把脚本贴在这里。
如果您将 Linux 机器作为服务器,Linux 机器作为客户端,或者能够在客户端和服务器之间放置(可能是虚拟机)Linux 路由器,则可以使用 NetEm。
NetEm是一个 Linux TC(流量控制)规则,它可以延迟(即增加延迟)数据包离开主机。尽管设置巧妙的规则很棘手(例如,为某些流量添加延迟,而不是其他流量),但添加一个简单的“将所有离开接口的内容延迟 50 毫秒”类型的规则很容易,并且提供了一些方法。
通过在客户端和服务器之间放置一个 Linux VM,您可以模拟尽可能多的延迟。您可以动态打开和关闭它。Linux 有其他 TC 规则可以与 NetEm 结合来限制带宽(但是设置它的脚本可能有些复杂)。NetEm 也可以随机丢弃数据包。
我用它,它很管用:)
正如其他人所提到的,Apache 的 ab(Apache 附带,因此您可能已经拥有它)很好。
其他不错的选择是:
我个人最喜欢 ab 和 JMeter。
来自 Microsoft 的 Web 应用程序压力工具 (WAST) 正是您所需要的。
我已经多年没有使用它了(不需要,不是因为我发现了其他任何东西),但是xat webspeed将是我要指出的第一件事
我发现了这个运行良好的小 Java 程序:邋遢
但这不是一个专业的解决方案,但它适用于简单的测试,我猜它使用 java 流和缓冲区来减慢连接速度。
我们使用 Loadrunner 在我们的 App 中进行带宽和流量模拟。Loadrunner 可以在各种机器上启动代理,您可以模拟一台机器在拨号调制解调器上运行,另一台在 DSL 上运行,另一台在有线互联网上运行。我们还使用 Loadrunner 来模拟从 10 个用户运行到 500 个用户运行的各种流量情况。我们还可以在脚本中插入思考时间并模拟执行 http 请求的真实用户。最好的部分是它带有一个录音室,它可以插入 Internet Explorer,您可以记录整个场景/用例,这可以像点击一页到完整的 50-60 页脚本或更多一样简单。
你看过宗璇吗?这是一个很好的实用程序,可以查看您的网站是否会在受到攻击时扩展,我的意思是非常受欢迎。我们将它用于我们的 Web 前端,以及我们的内部系统。
如果您有兴趣在浏览器中执行测试,还有一个非常棒的 Firefox 插件。
不要忘记 Wanulator (http://www.wanulator.de/)。Wanulator 这个名字来自“WAN”和“模拟器”。这几乎描述了该软件的功能:它模拟不同的 Internet 条件,例如延迟或丢包。此外,它模拟用户接入线路速度,例如调制解调器、ISDN 或 ADSL。Wanulator 目前是打包为基于 SLAX 的 Linux 启动 CD。这将为您提供完整的开箱即用体验。您可以在眨眼间将任何 PC 变成测试系统 - 只需启动 Wanulator CD。该软件包已经包含有用的客户端软件例如网络浏览器和网络嗅探器(Wireshark)。不过,如果 PC 有 2 个网络接口,则系统可以作为服务器和客户端之间的中间系统运行 - 作为交换机 - 无需任何配置麻烦。