gpt4 book ai didi

apache - 使用 Mod_JK 在 JBoss 服务器上测量请求处理时间

转载 作者:行者123 更新时间:2023-11-28 22:32:44 33 4
gpt4 key购买 nike

我的 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 服务一个服务所需的时间请求(例如,分配线程 worker 来处理它)
  • 处理请求并将其发送到数据库服务器所花费的时间(在 Tomcat/JBoss 服务器上的总时间)
  • Tomcat/JBoss 处理请求并发送响应所用的时间返回到 Web 服务器/客户端

有什么想法/线索吗?

这是我想分享的经验/研究。如果有人有类似的问题/知道一种方法来分享他们的经验/指示/想法,以便找到更好的解决方案,我们将不胜感激。

期待您的想法/建议

最佳答案

为什么要排除数据库时间?花费在数据库上的时间是您的应用程序正在等待的时间,就像它可能正在等待其他资源(例如 lucene 索引完成、远程 http 请求完成等)一样。

如果您真的想排除数据库访问时间,您需要使用计时器启动/停止指令来检测您的应用程序。这肯定需要进入您的应用程序内部(通过 AOP“干净地”或通过应用程序中关键点的启动/停止语句手动进行)并且不能简单地是来自外部世界的配置(例如 apache 模块)。

因此,您需要在处理链的最开始收到您的请求时启动计时器(过滤器在这里很有效),并在您每次发送查询时停止。然后在查询之后重新开始。这当然不能 100% 完成,尤其是在您使用透明 ORM(例如 hibernate)的情况下。这是因为有时您可能会间接执行查询,即在通过纯 Java 遍历集合或关联时。

关于apache - 使用 Mod_JK 在 JBoss 服务器上测量请求处理时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7734589/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com