我怎样才能慢慢提供HTTP?

时间:2012-11-30 23:29:16

标签: http load-testing

我正在开发一个http客户端,我想在需要一些时间才能完成的请求上测试它。我当然可以提出一个python脚本来满足我的需求,例如:

def slow_server(environ, start_response):
    with getSomeFile(environ) as file_to_serve:
        block = file_to_serve.read(1024);
        while block:
            yield block
            time.sleep(1.0)
            block = file_to_serve.read(1024);

但这感觉就像其他人已经遇到过的问题。是否有一种简单的方法来提供具有极低带宽上限的静态文件,缺少像apache或nginx这样的满级服务器。

我正在研究linux,到目前为止我一直在测试的方式是在一个充满文件的目录中使用python -m SimpleHTTPServer 8000。我对另一个简单的命令行服务器或在tcp端口8000上使用一个或几个iptables命令进行带宽限制的方法(或任何可行的方法)同样感兴趣。

3 个答案:

答案 0 :(得分:6)

我现在要使用的解决方案是使用“真正的”网络服务器,但更容易配置一个,lighttpd。我已将以下文件添加到我的路径(在~/bin

#! /usr/sbin/lighttpd -Df

server.document-root = "/dev/null"
server.modules = ("mod_proxy")
server.kbytes-per-second = env.LIGHTTPD_THROTTLE
server.port = env.LIGHTTPD_PORT
proxy.server  = ( "" => (( "host" => "127.0.0.1", "port" => env.LIGHTTPD_PROXY )))

这是一个lighttpd配置文件,充当localhost的反向代理;源端口和目标端口以及服务器总最大带宽作为环境变量给出,因此可以调用它:

$ cd /path/to/some/files
$ python -m SimpleHTTPServer 8000 &
$ LIGHTTPD_THROTTLE=60 LIGHTTPD_PORT=8001 LIGHTTPD_PROXY=8000 throttle.lighttpd

在端口8000上以低于每秒60KB的速率代理端口8000上的python文件服务器。显然,lighttpd可用于为文件本身提供服务,但是这个小脚本可用于制作任何 http服务器缓慢

答案 1 :(得分:1)

在Windows上,您可以使用Fiddler作为HTTP代理调试工具来模拟非常慢的速度。也许在您正在使用的操作系统上存在类似的工具。

答案 2 :(得分:0)

我记得我曾经有同样的问题,我的搜索出现了一个名为 mod_bw 的Apache2模块(mod_bandwith)。这对我的考试很有帮助。