是否可以限制 Tomcat 服务器的带宽?我需要它来模拟慢速(拨号)Internet 连接上的站点工作。所有测试都在本地主机中进行。
谢谢大家!
是否可以限制 Tomcat 服务器的带宽?我需要它来模拟慢速(拨号)Internet 连接上的站点工作。所有测试都在本地主机中进行。
谢谢大家!
通过创建阀门,这在 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
这在 Tomcat 中是不可能的,您应该在外面的某个地方寻找提供此类功能的 HTTP 代理,并通过该代理进行测试。在最坏的情况下自己编写这样一个代理,不应该超过十几行代码。
您可以使用 jmeter 执行此操作,请参阅:- http://jmeter.512774.n5.nabble.com/httpclient-socket-http-cps-td524481.html
另见: