`
不爱不见
  • 浏览: 285980 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

WEB的Filter统计请求的消耗时间

    博客分类:
  • WEB
阅读更多
使用Filter统计Java(J2EE)的web程序http请求响应时间
在网站性能的相关工作中,一个重要的方面是有一定的监控和日志统计,然后对这些数据进行分析,知道什么时候慢了,慢在哪里,然后才可以进行有针对性的性能优化工作;

这里,80/20准则是非常适用的,我所见过的大部分情况都是约80%页面都是没问题的,但是有约20%的页面的性能较差;

监控http请求的处理时间的方法有很多,这里介绍一种java(j2ee)的web程序中监控/统计http请求处理时间的简便方法:就是利用Filter来统计所有请求的处理时间;

Filter是j2ee的一种过滤器模式,可以在一个filterchain上挂很多个不同的filter,做各种的处理,比如安全、编码等;filter可以指定对应到哪些url,如果指定url-pattern为/*,那么就可以做对所有请求的统计

添加一个Filter名为PerfFilter, 在web.xml添加如下代码

<filter>

<display-name>PerfFilter</display-name>
<filter-name>PerfFilter</filter-name>

<filter-class>PerfFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>PerfFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

然后在PerfFilter中有如下代码

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

HttpServletRequest req = (HttpServletRequest)request;

long t1 = System.currentTimeMillis();

chain.doFilter(request, response);

long t2 = System.currentTimeMillis();

System.out.println(“***request (” + req.getRequestURI() + “) finished with time(ms): ” + (t2-t1) );

}

这时候,所有的http请求,无论是servlet,jsp还是其他各种框架的实现,比如struts,springmvc,jsf等,都可以被这个Filter统计到,可以方便后续的日志分析工作[实际中通常将System.out换成相关的logger],找到较慢的请求,然后重点该进。

例如,本地访问servlet和jsp,就会在控制台看到如下输出;

***request (/webtest/TestServlet) finished with time(ms): 5000

***request (/webtest/jsp1.jsp) finished with time(ms): 3000

有必要的话,还可以将请求相关的参数打印出来,因为实际工作中,不少请求的响应时间是和参数密切相关的;

这种做法的好处是有一个单独、统一的性能日志,系统以后添加任何servlet/jsp或者切换框架,都不需要任何改动;
                                                             -------摘自互联网
分享到:
评论

相关推荐

    SurfControl Web Filter 5.0产品白皮书

    - 互联网的滥用导致员工访问与工作无关的网站,消耗大量的工作时间,降低工作效率。 - 通过统计数据,可以估算因互联网滥用导致的生产力流失所造成的经济损失。 2. **网络带宽浪费问题**: - 员工的个人网络活动...

    java web 修改request携带的参数信息

    同时,Filter的执行会增加服务器的处理时间,所以要优化Filter的实现,避免不必要的计算和资源消耗。 综上所述,这个"java web 修改request携带的参数信息"程序利用Filter技术,对HTTP请求中的参数进行动态修改,以...

    web容器文件压缩 tk-filter tk-filter js,jsp,css,文件压缩包含源代码

    这样,每当有对应的请求被Web容器处理时,`tk-filter` 就会自动对响应内容进行压缩。 压缩过程通常包括以下步骤: 1. 检测客户端是否接受压缩内容,这通常是通过检查`Accept-Encoding` HTTP头来实现的。 2. 如果...

    .NET MVC5单位时间内请求次数限制

    在.NET MVC5框架中,开发人员常常需要处理网站性能和安全性的问题,其中之一就是如何有效地限制单位时间内的请求次数,以防止恶意并发请求和过滤非法请求。`MvcThrottle`是一个强大的解决方案,它允许开发者实现...

    添加了http_image_filter_module模块的Nginx

    使用`http_image_filter_module`时,要注意防止恶意用户通过大量请求消耗服务器资源。同时,为了提高响应速度,可以结合使用缓存策略,如使用Nginx的`proxy_cache`或`memcached`等缓存解决方案。 6. **总结** `...

    web定时器组件

    2. Filter:利用Filter,可以在每次请求前或后执行定时任务,但这可能会影响Web应用的性能。 3. CDI(Contexts and Dependency Injection):在Java EE环境中,可以使用CDI事件和延时注入来创建定时任务。 4. Spring...

    WEB 文件上传组件

    - **集成FileUpload**:在Tomcat中部署Java Web应用,可以将Apache Commons FileUpload库添加到项目的类路径中,以便在Servlet或Filter中使用。 3. **Servlet处理文件上传** - **doPost方法**:在Servlet中,文件...

    druid示例(spring监控,数据库监控,web监控)

    再者,Druid的Web监控还包含了过滤器(Filter)功能,例如DruidStatFilter可以监控每个Servlet请求的耗时,帮助开发者找出性能瓶颈。此外,Druid还支持SQL解析和日志打印,可以记录所有的SQL语句及其执行时间,这...

    Filter压缩

    在IT行业中,这种技术尤其适用于优化网页加载速度,减少服务器带宽消耗,以及提高数据存储效率。 首先,我们要理解Filter压缩的工作原理。它基于预定义的一系列转换规则,这些规则被称为“滤波器”或“过滤器”。每...

    pjl-comp-filter-1.8.1

    在Java Web应用中,过滤器允许开发者在请求被处理之前或之后执行某些操作,比如在这个例子中,检查请求头以确定是否需要开启压缩。HTTP请求头中的"Accept-Encoding"字段通常会指示客户端(浏览器)支持的编码类型,...

    一个servlet类处理多个请求(反射优化),简单易懂

    5. 过滤器:使用Filter可以预处理请求和后处理响应,过滤掉非法请求,减轻Servlet的压力。过滤器同样可以利用反射,根据请求信息动态调用不同逻辑。 6. 缓存策略:对于频繁请求的数据,可以通过缓存机制减少数据库...

    web过滤器 c#

    在IT行业中,Web过滤器(Web Filter)是一种用于在Web应用程序中执行特定任务的机制,主要目的是为了增强或改变HTTP请求和响应的处理过程。在C#编程环境下,我们可以使用ASP.NET框架来实现Web过滤器,它对于构建安全...

    过滤器 java servlet

    - **性能监控**:统计请求处理时间和资源消耗,提供性能优化依据。 - **GZIP压缩**:压缩响应内容,减少网络传输的数据量,提高加载速度。 - **缓存控制**:添加合适的HTTP头来控制浏览器缓存策略。 - **安全过滤**...

    Jetty web 容器

    - **轻量级**: Jetty 不依赖于任何大型的Java企业版(Java EE)容器,它的体积小,启动速度快,资源消耗低。 - **模块化**: Jetty 采用模块化设计,用户可以根据需要选择和组合模块,避免了不必要的功能开销。 - *...

    解析web-config.xml文件,并将里面的元素转换成对应的JAVA对象

    在Java Web开发中,`web-config.xml`是应用的核心配置文件,它定义了Servlet、过滤器、监听器、会话超时、MVC框架的配置等关键信息。这个过程通常涉及XML解析和Java对象映射,是理解Web应用程序运行机制的关键部分。...

    Spring整合Jetty开发web应用的例程

    在Java Web开发中,Spring框架和Jetty服务器的整合提供了轻量级且高效的应用部署解决...实际项目中,开发者可以根据具体需求调整配置,如添加过滤器、监听器,或者配置更多的Servlet和Filter,以满足复杂的应用场景。

    Tomcat web.xml,server.xml中详细配置说明文档

    作为轻量级应用服务器,Tomcat通常用于小型到中型的应用部署,与大型的Java EE服务器(如JBoss或WebLogic)相比,它的资源消耗更低,易于管理和部署。 1.2 **Tomcat的结构** Tomcat主要由以下几个目录组成: - `bin...

    通向架构师的道路(第十三天)Axis2 Web Service安全初步.docx

    在选择安全机制时,需要考虑到系统资源消耗、安全级别要求和应用的特点等因素。 此外,使用https通信并且使用用户名密码来验证的WS是一种常见的安全机制。在这种机制中,需要验证客户端来的请求,即需要具有基本的...

    javamelody程序运行监控报表

    它能够直观地展示应用程序的CPU使用率、内存消耗、请求处理数量等关键数据,并且支持对数据库访问(如JDBC调用)以及页面渲染时间进行跟踪分析。通过JavaMelody提供的实时图表和报表功能,开发者或运维人员可以快速...

    工学院java复习.docx

    在Java Web开发中,我们经常接触到几个关键的概念,包括HTTP请求方法、Cookie与Session、请求转发与重定向、过滤器(Filter)以及Servlet事件监听器。这些概念构成了Web应用的基础框架。 1. **HTTP请求方法:GET与...

Global site tag (gtag.js) - Google Analytics