4

是否可以限制 Tomcat 服务器的带宽?我需要它来模拟慢速(拨号)Internet 连接上的站点工作。所有测试都在本地主机中进行。

谢谢大家!

4

3 回答 3

2

通过创建阀门,这在 Tomcat 中很容易实现。

创建一个从 tomcat 扩展 ValveBase 类的类。

里面的代码应该是这样的:

/**
 * {@inheritDoc}
 */
@Override
public void invoke(final Request request, final Response response) 
                   throws IOException, ServletException {

    if (randomDelay != 0) {
        long delay = minDelay + randomizer.nextInt(randomDelay);
        try {
            if (LOGGER.isDebugEnabled()) {
                LOGGER.debug("sleeping for " + delay + " ms");
            }
            Thread.sleep(delay);
        } catch (InterruptedException e) {
            if (LOGGER.isDebugEnabled()) {
                LOGGER.debug("someone wake me up : " + e.getMessage());
            }
        }
    }

    // let's continue !
    getNext().invoke(request, response);
}

将它编译到一个 jar 中,然后放入 tomcat lib 目录(通常是 {catalina.home}/lib)。

最后在 server.xml 中添加阀门声明:

<Server ...>
  <Service name="Catalina">
   <Engine name="Catalina" defaultHost="localhost">
     (...)
     <Host name="localhost" ...>
       <Valve className="tools.tomcat.RandomDelayValve" />

HIH

于 2012-10-22T17:43:22.027 回答
1

这在 Tomcat 中是不可能的,您应该在外面的某个地方寻找提供此类功能的 HTTP 代理,并通过该代理进行测试。在最坏的情况下自己编写这样一个代理,不应该超过十几行代码。

于 2012-08-19T14:59:53.897 回答
1

您可以使用 jmeter 执行此操作,请参阅:- http://jmeter.512774.n5.nabble.com/httpclient-socket-http-cps-td524481.html

另见:

于 2012-08-20T00:45:30.793 回答