- 浏览: 284793 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (204)
- Ubuntu (8)
- Maven (1)
- JVM (12)
- Shell (11)
- WEB (24)
- 数据库 (1)
- Linux (24)
- ibatis源码 (8)
- 乱七八糟 (6)
- memcache (2)
- 数据结构 (1)
- mongoDb (3)
- WebService (1)
- 装机 (1)
- zookeeper (0)
- Hbase (4)
- mysql (6)
- nginx (3)
- SSDB (0)
- kafka消息 (3)
- Rust语言学习 (2)
- Tair学习 (0)
- ES (7)
- freeMarker (2)
- 分布式任务调度学习 (0)
- Apache Camel翻译 (1)
- Storm (1)
- Netty (3)
- NodeJs (1)
- BootStrap (1)
- 读书计划 (0)
- databus (1)
- Socket编程 (1)
- Redis (5)
- Hystrix (2)
- JDK (2)
- JMeter测试 (1)
- Idea (8)
- JProfile学习 (9)
- springBoot (6)
- httpClient (1)
- Docker学习 (1)
- 微信小程序学习 (1)
- beanstalkd (0)
- gradle (1)
- 硬盘学习 (0)
- activiti-engine (1)
- 算法 (3)
- thrfit学习 (1)
- serviceMesh (2)
- 流控 (0)
- TCP (0)
最新评论
-
k_kid9157:
亲测可用 特来感谢LZ分享!
the namespace on the "definitions" element, is not atorChain doIntercept Interce -
fair_jm:
归纳得很好 还有G1 学习了
java的垃圾收集算法和垃圾收集器 -
zhouchaofei2010:
有理想 赞一个
ibatis源码 -
code_cj:
好像在哪里看过,有点熟眼...
jvm如何判断对象已死? -
ansjsun:
不错不错..就是有点粗略..希望能介绍下.标记整理和标记删除. ...
jvm如何判断对象已死?
使用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或者切换框架,都不需要任何改动;
-------摘自互联网
在网站性能的相关工作中,一个重要的方面是有一定的监控和日志统计,然后对这些数据进行分析,知道什么时候慢了,慢在哪里,然后才可以进行有针对性的性能优化工作;
这里,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或者切换框架,都不需要任何改动;
-------摘自互联网
发表评论
-
四层、七层负载均衡的区别(转)
2019-04-18 03:06 426简介 区别 Nginx、LVS及HAP ... -
OSI七层协议图解(转)
2019-04-18 02:38 584图解 转自: https://www.cnblogs.co ... -
AES加密时抛出java.security.InvalidKeyException: Illegal key size or default parameter
2017-08-22 11:50 655使用AES加密时,当密钥大于128时,代码会抛出java.s ... -
springMVC支持jsonp
2017-06-29 14:39 620@RequestMapping("directive ... -
Spring Batch学习
2017-02-14 16:17 715https://www.ibm.com/developerwo ... -
guava缓存
2016-09-18 09:57 495http://outofmemory.cn/java/guav ... -
java毫秒和微秒区别
2016-08-02 09:59 0http://blog.csdn.net/dliyuedong ... -
gcc查看当前的版本并升级
2016-03-19 18:45 34591.gcc查看版本:gcc -v MacBook-Pro:$ ... -
java发送邮件附件乱码的解决
2016-03-17 13:17 961import javax.mail.internet.Mime ... -
Error finishing response
2015-02-13 19:02 1180https://issues.apache.org/bugzi ... -
Missing artifact com.sun:tools:jar:1.5.0
2015-01-28 14:30 758当导入maven项目时出现: Missing artifac ... -
velocity1.6.3导致cpu过高
2014-09-06 22:00 796velocity1.6.3的bug导致cpu过大。 https ... -
doc 编码 GBK 的不可映射字符
2014-03-31 20:16 869如果提示:编码 GBK 的不可映射字符 eclipse 生成 ... -
Cannot find the declaration of element 'beans'. 的解决方法
2013-12-05 09:47 2410org.xml.sax.SAXParseException: ... -
Tomcat日志处理(包括catalina.out切分)
2013-11-07 09:57 20311 Tomcat 日志信息分为两类 : 一是运行中的日志,它 ... -
TortoiseSVN更改账号的方法 (转)
2013-10-14 13:46 1201在copy其它用户check的项目到本地后,把账号信息也带过 ... -
tomcat下域名的配置,ROOT.xml的作用
2012-12-13 11:36 1784以下小结使用tomcat5.0.28测试通过,tomcat安装 ... -
在布署Tomcat时,出现The scratchDir you specified is unusable
2012-12-10 12:53 7850布署Tomcat报错 ....... 2007-12-22 ... -
tomcat报BAD packet signature 18245错误的原因
2012-12-03 10:14 2070最近把项目部署到windows服务器上面,通过tomcat跑 ... -
validateJarFile jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending
2012-12-01 10:02 1048把那个 jsp-api.jar servlet-api.jar ...
相关推荐
- 互联网的滥用导致员工访问与工作无关的网站,消耗大量的工作时间,降低工作效率。 - 通过统计数据,可以估算因互联网滥用导致的生产力流失所造成的经济损失。 2. **网络带宽浪费问题**: - 员工的个人网络活动...
同时,Filter的执行会增加服务器的处理时间,所以要优化Filter的实现,避免不必要的计算和资源消耗。 综上所述,这个"java web 修改request携带的参数信息"程序利用Filter技术,对HTTP请求中的参数进行动态修改,以...
这样,每当有对应的请求被Web容器处理时,`tk-filter` 就会自动对响应内容进行压缩。 压缩过程通常包括以下步骤: 1. 检测客户端是否接受压缩内容,这通常是通过检查`Accept-Encoding` HTTP头来实现的。 2. 如果...
在.NET MVC5框架中,开发人员常常需要处理网站性能和安全性的问题,其中之一就是如何有效地限制单位时间内的请求次数,以防止恶意并发请求和过滤非法请求。`MvcThrottle`是一个强大的解决方案,它允许开发者实现...
使用`http_image_filter_module`时,要注意防止恶意用户通过大量请求消耗服务器资源。同时,为了提高响应速度,可以结合使用缓存策略,如使用Nginx的`proxy_cache`或`memcached`等缓存解决方案。 6. **总结** `...
2. Filter:利用Filter,可以在每次请求前或后执行定时任务,但这可能会影响Web应用的性能。 3. CDI(Contexts and Dependency Injection):在Java EE环境中,可以使用CDI事件和延时注入来创建定时任务。 4. Spring...
- **集成FileUpload**:在Tomcat中部署Java Web应用,可以将Apache Commons FileUpload库添加到项目的类路径中,以便在Servlet或Filter中使用。 3. **Servlet处理文件上传** - **doPost方法**:在Servlet中,文件...
再者,Druid的Web监控还包含了过滤器(Filter)功能,例如DruidStatFilter可以监控每个Servlet请求的耗时,帮助开发者找出性能瓶颈。此外,Druid还支持SQL解析和日志打印,可以记录所有的SQL语句及其执行时间,这...
在IT行业中,这种技术尤其适用于优化网页加载速度,减少服务器带宽消耗,以及提高数据存储效率。 首先,我们要理解Filter压缩的工作原理。它基于预定义的一系列转换规则,这些规则被称为“滤波器”或“过滤器”。每...
在Java Web应用中,过滤器允许开发者在请求被处理之前或之后执行某些操作,比如在这个例子中,检查请求头以确定是否需要开启压缩。HTTP请求头中的"Accept-Encoding"字段通常会指示客户端(浏览器)支持的编码类型,...
5. 过滤器:使用Filter可以预处理请求和后处理响应,过滤掉非法请求,减轻Servlet的压力。过滤器同样可以利用反射,根据请求信息动态调用不同逻辑。 6. 缓存策略:对于频繁请求的数据,可以通过缓存机制减少数据库...
在IT行业中,Web过滤器(Web Filter)是一种用于在Web应用程序中执行特定任务的机制,主要目的是为了增强或改变HTTP请求和响应的处理过程。在C#编程环境下,我们可以使用ASP.NET框架来实现Web过滤器,它对于构建安全...
- **性能监控**:统计请求处理时间和资源消耗,提供性能优化依据。 - **GZIP压缩**:压缩响应内容,减少网络传输的数据量,提高加载速度。 - **缓存控制**:添加合适的HTTP头来控制浏览器缓存策略。 - **安全过滤**...
- **轻量级**: Jetty 不依赖于任何大型的Java企业版(Java EE)容器,它的体积小,启动速度快,资源消耗低。 - **模块化**: Jetty 采用模块化设计,用户可以根据需要选择和组合模块,避免了不必要的功能开销。 - *...
在Java Web开发中,`web-config.xml`是应用的核心配置文件,它定义了Servlet、过滤器、监听器、会话超时、MVC框架的配置等关键信息。这个过程通常涉及XML解析和Java对象映射,是理解Web应用程序运行机制的关键部分。...
在Java Web开发中,Spring框架和Jetty服务器的整合提供了轻量级且高效的应用部署解决...实际项目中,开发者可以根据具体需求调整配置,如添加过滤器、监听器,或者配置更多的Servlet和Filter,以满足复杂的应用场景。
作为轻量级应用服务器,Tomcat通常用于小型到中型的应用部署,与大型的Java EE服务器(如JBoss或WebLogic)相比,它的资源消耗更低,易于管理和部署。 1.2 **Tomcat的结构** Tomcat主要由以下几个目录组成: - `bin...
在选择安全机制时,需要考虑到系统资源消耗、安全级别要求和应用的特点等因素。 此外,使用https通信并且使用用户名密码来验证的WS是一种常见的安全机制。在这种机制中,需要验证客户端来的请求,即需要具有基本的...
它能够直观地展示应用程序的CPU使用率、内存消耗、请求处理数量等关键数据,并且支持对数据库访问(如JDBC调用)以及页面渲染时间进行跟踪分析。通过JavaMelody提供的实时图表和报表功能,开发者或运维人员可以快速...
在Java Web开发中,我们经常接触到几个关键的概念,包括HTTP请求方法、Cookie与Session、请求转发与重定向、过滤器(Filter)以及Servlet事件监听器。这些概念构成了Web应用的基础框架。 1. **HTTP请求方法:GET与...