我的 Web 应用程序架构是:Apache 2(作为负载均衡器)+ JBoss 3.2.3 + MySQL 5.0.19。
我想:仅测量在 JBoss 服务器上花费的请求处理时间(对于每个单独的请求)(即,不包括在 Web 和数据库服务器上花费的时间。
我一直在研究如何仅在应用层上记录请求处理时间。我发现 *mod_JK logging*、*Apache 的 mod_log_config* 和 Tomcat AccessLogValve是两种可能的方法。
使用 *mod_JK 日志记录 *:我的理解 mod_jk 日志记录为每个请求提供请求处理时间,并计算为请求离开 Apache 服务器的时间与 Apache 服务器收到相应响应的时间之间的时间差。如果这不准确/不正确,请纠正我。
使用 Apache 的 mod_log_config 模型(http://www.lifeenv.gov.sk/tomcat-docs/jk/config/apache.html):通过在 LogFormat(JKLogFile 构造)构造中添加“%{JK_REQUEST_DURATION}n”(参见上面的链接)。“JK_REQUEST_DURATION”从 Apache 的角度捕获整个 Tomcat 处理时间。
时间(在上述情况下)包括 Tomcat/JBoss + MySQL 处理时间。在我的情况下它没有帮助,因为它包括 MySQL 处理时间——我只想在 JBoss 上记录请求处理时间。任何建议/想法表示赞赏?
使用AccessLogValve:它可以通过在 AccessLogValve XML 构造的模式属性中设置 %D 来记录“处理请求所花费的时间,以毫秒为单位”。这不是很清楚
- 如果此时间是 tomcat/JBoss 服务请求所需的时间(例如,分配线程工作者来处理它),则为时间
- 处理请求并将其发送到数据库服务器所用的时间(Tomcat/JBoss 服务器上的总时间)
- Tomcat/JBoss 处理请求并将响应发送回 Web 服务器/客户端所需的时间
任何想法/线索?
这是我想分享的经验/研究。如果有人有类似的问题/知道一种方法来分享他们的经验/指针/想法,我们将不胜感激,可以找到更好的解决方案。
期待您的想法/建议