1

我的要求是测量部署在 Tomcat 中的 webapp 的请求和响应带宽。基本上捕获每个请求和响应带宽并存储统计数据并超时对该数据进行分析。

我们已经编写了一个自定义的 Tomcat Valve 来捕获有关进入 web 应用程序的请求的大量信息。由于请求和响应都通过 Valve,我认为应该有一种方法可以在 Valve 中捕获带宽统计信息,但还没有找到方法。

我们之前做过的一件事是使用 Tomcat RequestInfo.java 类获取此信息。然而,这似乎不是一个干净的解决方案。在深入研究 tomcat 代码时,我注意到我们可以获得 org.apache.coyote.Request 对象(在 RequestInfo 类中使用),如下所示;

org.apache.catalina.connector.request.getCoyoteRequest().getBytesRead(); 
org.apache.catalina.connector.request.getCoyoteRequest().getResponse().getContentWritten();

但是上面的语句总是返回 0,这与 RequestInfo 类中的输出相比是错误的。

关于可能是什么问题的任何想法?为什么 coyote.Request 没有在 Valve 中返回正确的带宽?有没有更好的方法来捕获请求/响应带宽,有或没有 Valve?!

4

0 回答 0