【发布时间】:2012-08-15 04:17:40
【问题描述】:
是否可以限制 Tomcat 服务器的带宽?我需要它来模拟慢速(拨号)Internet 连接上的站点工作。所有测试都在 localhost 中进行。
谢谢大家!
【问题讨论】:
标签: tomcat configuration localhost bandwidth dial-up
是否可以限制 Tomcat 服务器的带宽?我需要它来模拟慢速(拨号)Internet 连接上的站点工作。所有测试都在 localhost 中进行。
谢谢大家!
【问题讨论】:
标签: tomcat configuration localhost bandwidth dial-up
这在 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" />
嗨
【讨论】:
这在 Tomcat 中是不可能的,您应该在外面的某个地方寻找提供 such functionality 的 HTTP 代理,并通过该代理进行测试。最坏的情况是自己写一个这样的代理,不应该超过十几行代码。
【讨论】:
【讨论】: