有没有办法限制 apachebench 连接服务器的速度?

有没有办法限制 apachebench 连接服务器的速度?

我正在尝试对一个特定的 PHP 脚本进行压力测试,该脚本强制下载一个非常大的文件,但具体来说是当连接速度较慢的客户端发出请求时。我还想同时测试网站其余部分在这种负载下的表现。我有 FiOS,所以进行几十个并发连接实际上不会让服务器长时间处于负载状态(我们不关心容量,因为我们预计这个文件不会有很多并发连接,只有几十个非常慢的连接),我想测试它,就好像我在一个 100kb/秒的慢速连接上。有没有办法限制 ApacheBenchmark 连接到网站的速度?或者有没有其他方法可以暂时限制我与这个网站的连接?我在本地运行 Mac OS X,服务器是运行 Apache 的 Windows 机器。

答案1

一种可能性是使用 OS X 的 IPFW 功能集。IPFW 是 OS X 的软件防火墙,恰好也支持流量整形。下面介绍如何配置它(假设 Web 服务器 IP 地址为 1.2.3.4):

  1. 打开终端应用程序以获取命令行。
  2. 创建虚拟网络设备
    sudo ipfw pipe 1 config bw 15Kbyte/s
  3. 创建两个规则,通过虚拟设备将流量重定向到/从 Web 服务器:
    sudo ipfw add 1 pipe 1 ip from 1.2.3.4 to any sudo ipfw add 2 pipe 1 ip from any to 1.2.3.4

现在,您的 OS X 计算机与 Web 服务器之间的所有流量都将被限制为 15KB/s(根据需要更改此值)。

要删除配置以恢复无限带宽:
sudo ipfw delete 1
sudo ipfw delete 2
ipfw pipe delete 1

警告:
1. 我不确定配置一旦设置,在重启后是否仍然有效。2
. 这假设您的软件防火墙尚未配置;如果已配置,则规则 1 和 2 可能已经存在,并且此处的命令会导致错误。

希望这可以帮助。

答案2

我很高兴你这样做;许多人不明白,一旦他们的应用程序走出实验室,进入“真正的互联网”,其行为将发生根本性的变化。

你正在寻找的一般类别是WAN 模拟器。他们出售的硬件设备(和软件)价格从 2000 美元起,如果你想要经常这样做,而且不只是改变带宽,还要改变延迟、抖动和其他因素。Shunra 和 Linktropy 是两家不错的供应商。

但是也有很多纯软件解决方案。大多数软件可以在 Linux 上运行,但我想有些软件也可以在 OSX 上运行。 瓦内姆是一个很好的免费软件。 ns-2是免费的模拟器,这与您想要的不同,甚至可能更复杂,您可以构建一个虚假网络并模拟它。

或者 dummynet,但我会将其添加到 Urgoll 的好答案中。

相关内容