【问题标题】:Tomcat: limit bandwidth for localhostTomcat:限制本地主机的带宽
【发布时间】:2012-08-15 04:17:40
【问题描述】:

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

谢谢大家!

【问题讨论】:

    标签: tomcat configuration localhost bandwidth dial-up


    【解决方案1】:

    这在 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" />
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-11-13
          • 2010-09-25
          • 2013-06-05
          • 1970-01-01
          • 2014-01-23
          • 2011-08-15
          相关资源
          最近更新 更多