【发布时间】:2011-02-23 22:42:05
【问题描述】:
我正在寻找一个过滤器,它可以给我两件事:每分钟的请求数和每分钟的平均响应时间。我已经得到了个人读数,我只是不知道如何将它们相加。
我的过滤器捕获每个请求,并记录每个请求所花费的时间:
public void doFilter(ServletRequest request, ...()
{
long start = System.currentTimeMillis();
chain.doFilter(request, response);
long stop = System.currentTimeMillis();
String time = Util.getTimeDifferenceInSec(start, stop);
}
这些信息将用于创建一些漂亮的 Google Chart 图表。我不想将数据存储在任何数据库中。只是一种在请求时获取当前数字的方法
因为这是一个大容量的应用程序;低开销是必不可少的。
我假设我的应用程序服务器不提供此信息。
【问题讨论】:
-
您能详细说明一下吗?答案“静态变量”可能只是误解了您需要的结果。
-
“这是一个大容量应用程序;低开销是必不可少的。”那么,当市场上有工具经过适当的工具、数据管理和可视化测试时,为什么要自己编写代码呢?当有人要求 X、Y 和 Z 时会发生什么。专注于应用程序开发并考虑使用性能专家创建的工具来简化初始工作和未来的维护。其中一些工具甚至提供带有开放 API 的无头(无 UI)运行时,供您将其集成到您自己的管理仪表板中。查看opencore.jinspired.com
-
@William Louth 您的评论很有价值。我想你可以把它写成答案。
-
旁注:您应该使用
nanoTime()来测量经过的时间,而不是currentTimeMillis()。有关这方面的背景信息,请参阅 Kevin Bourrillion 的 answer。 -
在低开销和低占用空间之间进行权衡。我不想重新发明轮子或任何东西。只是一种简单的方法来衡量这些东西。
标签: java performance jakarta-ee servlet-filters