Tomcat:限制本地主机带宽

4

是否可以限制Tomcat服务器的带宽?我需要模拟在缓慢(拨号)互联网连接上运行的网站。所有测试都在本地主机上进行。

感谢您的帮助!

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文件中添加valve声明:

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

HIH


1

在Tomcat中不可能实现,你应该在外部寻找提供这种功能的HTTP代理,并通过该代理隧道传输你的测试。在最坏的情况下,自己编写这样的代理,不需要超过十几行代码。


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接