是否可以限制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" />
高
关于Tomcat:限制本地主机的带宽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12027422/