我的要求是衡量部署在Tomcat中的Web应用程序的请求和响应带宽。基本上捕获每个请求和响应带宽并存储统计信息并对该数据进行超时分析。
我们已经编写了一个自定义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?!