如何在套接字级拦截Tomcat请求?

时间:2010-04-13 14:42:04

标签: java performance apache tomcat tomcat6

我正在为在Apache Tomcat 6上运行的Web应用程序框架进行性能研究。

我正在尝试测量处理HTTP请求的时间开销。

我想做的是:

/

// just before first request byte is read
long t1 = System.nanoTime();

// request is processed...

// just after final byte is written to response
long t2 = System.nanoTime();

/

然后我会计算总时间(t2-t1)。

有办法做到这一点吗?谢谢你的帮助!

4 个答案:

答案 0 :(得分:1)

一种不需要任何编码的替代方案是使用Wireshark等工具查看网络流量。

答案 1 :(得分:1)

我认为你可以通过添加Filter来实现这一点,并在调用doFilter之前和之后将你的计时代码放在过滤器链的其余部分。

答案 2 :(得分:1)

跟踪此问题的最佳方式可能是Valve

但如果在Tomcat导出的MBean中尚未跟踪此内容,我会感到惊讶。特别是,MBean Catalina:name=http-<my port num>,type=GlobalRequestProcessor列出了以下属性:

  

bytesSent = 51829989
  与BytesReceived = 0
  processingTime = 11464
  ERRORCOUNT = 8
  MAXTIME = 1250
  requestCount = 923
  modelerType = org.apache.coyote.RequestGroupInfo

查看Monitoring and Managing Tomcat上的文档,了解如何使用JMX访问这些MBean。

答案 3 :(得分:0)

AspectJ你的解决方案。使用它你可以对应用程序CL加载的类(但不是通过bootstrap CL)执行任何操作。