我正在为在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)。
有办法做到这一点吗?谢谢你的帮助!
答案 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)执行任何操作。