是否可以限制 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
另见: