- 浏览: 1079330 次
- 性别:
- 来自: 长沙
-
文章分类
- 全部博客 (639)
- 服务器配置篇 (58)
- hibernate篇 (14)
- spring篇 (33)
- struts篇 (28)
- JS篇 (46)
- 其他技术篇 (46)
- 数据库集群配置 (6)
- JAVA基础相关 (48)
- 分布式框架HadHoop的应用 (2)
- FLEX篇 (8)
- SQLSERVER技术 (32)
- Android学习 (13)
- amchart学习笔记 (1)
- openfire+smark搭建即时通讯 (9)
- Linux学习 (18)
- Oracle数据库 (15)
- 网站优化技术 (12)
- mysql数据库 (2)
- 项目学习总结 (18)
- 工具类(JAVA) (12)
- 工具类(JS) (2)
- 设计模式 (10)
- Lucene学习 (24)
- EJB3学习 (6)
- Sphinx搜索引擎 (3)
- 工作中用到的软件小工具 (5)
- .NET (49)
- JAVA 连接SQLSERVER2008步骤 (1)
- MongoDB (19)
- Android手机开发 (3)
- Maven (6)
- vue (9)
- Shiro (4)
- mybatis (3)
- netty框架 (1)
- SpringCloud (3)
- spring-cloud (7)
- Git (1)
- dubbo (2)
- springboot (13)
- rocketmq (1)
- git学习 (2)
- kafka服务器 (2)
- linux (10)
- WEB系统辅助项目 (1)
- jenkins (2)
- docker (4)
- influxdb (3)
- python (2)
- nginx (1)
最新评论
-
jiangfuofu555:
这样数据量大,效率怎么样?
sqlserver 实现分页的前台代码 以及后台的sqlserver语句 -
w156445045:
博主请问下,如何做到实时的刷新呢,
另外我后台是Java 谢谢 ...
web 版本的汽车仪表盘,非常好看。还有各种图形 -
jackyin5918:
<transportConnector name=&qu ...
ActiveMQ的activemq.xml详细配置讲解 -
握着橄榄枝的人:
你这个不是spring1.x的吧
spring1.x使用AOP实例 -
xiaophai:
全乱套了!
openfire+spark搭建完美的及时通讯
Jwebap User Guide
leadyu (yu-lead@163.com)
1 介绍
Jwebap是一个用于java web application 的profiler工具。 它不采用JVMPI提供的特性实现监控,是一个纯粹的JAVA应用,不依赖于OS,JVM,JDK1.4以上用户都可以使用。
它的目的是希望能够安全高效的部署于生产以及测试应用系统,及时地发现应用系统中存在的性能瓶颈,以及为一些动态性很高难于调试和维护的应用系统提供帮助。目前它主要致力于性能分析和优化方面,以后可能往其他监控方面发展(比如业务数据的监控)。因此,组件提供基本的SDK,提供基本的分析功能,不断丰富的分析功能可以通过统一的方式以插件的形式加入Jwebap组件。
出于这些目的,作者心目中理想的监控分析工具应该具备下面几个特性:
1.1 高效
组件本身必须具有很高的执行效率,对应用系统的运行带来的负担非常微小。其实就目前来说,一般的profiler工具在一定的组件功能复杂度的情况下,需要处理非常庞大的数据量,做到真正的高效率其实是一个困难度很高的挑战,所以,一方面组件本身要足够健壮和高效,另一方面对于组件可以监控的范围也要可以配置。(毕竟我们进行性能分析并不一定需要了解应用的全部执行细节)
1.2 分析功能丰富
如果只是把庞大的应用系统运行细节暴露出来,已经远远不能满足现有的需要,根据不同视角的分析与统计变得非常必要。并且分析的功能能够不断丰富。(例如对于数据库的监控插件提供topMethod,topSQL之类的分析报表,甚至是动态的图形报表)
1.3 跨平台
基于JAVA的组件难道还要考虑跨平台的问题吗?回答是当然需要,起码对于profiler工具来说。目前不少profiler通过jvmpi以及一些本地化接口实现对于JVM内部运行细节的监控。而理想的监控工具应该是纯JAVA的,不依赖JVM和OS,否则组件的生命会变得脆弱,使用的时候也会很麻烦,我希望组件不但可以使用在测试环境,同样无缝的部署与生产应用系统。难道让生产系统应监控工具而改变OS和JVM吗?这明显不大可能。
1.4 部署简易
希望是非常的方便,通过对动态类加载,字节码注入等技术的运用对外提供简单的部署方式,我希望就是通过几行的配置文件就能完成部署。
1.5 可扩展性
前面提到,组件应该能够提供丰富的分析功能,并且这种功能可以通过插件的方式不断集成于组件之中以满足不同的需要。所以,组件的实现中信息的采集和信息的分析必须是解耦的,一方面组件提供高效稳定的信息采集方式,另一方面组件提供基于插件的框架,能够不断扩展分析功能以满足需要,甚至这些分析功能不仅仅是性能方面,也包括业务数据的监控。
2 什么是轨迹
在组件的设计中包含一个重要的概念——轨迹。那么什么是轨迹?
l 轨迹的定义
在系统中,任何程序的执行都有可能留下轨迹(数据库的调用会留下SQL轨迹,事务的轨迹,http请求会留下访问的轨迹,程序的方法执行也可以留下轨迹)。
轨迹包含了对性能分析有用的信息(比如上下文的信息,线程堆栈的信息,执行时间的信息等等),轨迹之间存在关系,比如数据库事务的轨迹和SQL的轨迹,http请求和类方法执行的轨迹之间都有一定的关系。在性能分析中,我们可能存在几个关注点,比如数据库,远程调用,方法调用,组件等等,通过这些关注点相关程序留下的轨迹,我们进行性能分析。
l 轨迹的管理
轨迹是错综复杂的,零碎地,关系模糊的,所以要真正有助于性能分析,还需要相应的支持。所以,轨迹又需要生命周期管理,和统计管理。
轨迹的生命周期管理:轨迹创建,运行,销毁,钝化的各个状态。通过分析工具把有问题的轨迹(比如执行时间过长)找到,通过视图暴露出来。
轨迹的统计:不同关注点的轨迹,存在不同的统计逻辑,通过不同的分析插件,展现给性能分析者。
l 轨迹的注入
轨迹不会自己产生,我们也不可能修改系统的代码。而我又不想像其他的一些分析工具一样,通过本地接口获取JVM的状态从而进行统计(那样就得依赖JVM,依赖OS)。而现在有一个不错的办法摆在我们的面前,那就是采用ClassWorking。目前,我已经实现了一个ClassEnhancer以及一个PackageEnhancer,它能够对指定的类和包进行注入。
l 轨迹的生命周期
3 Jwebap插件
Jwebap在模型上采用了插件的设计,从而达到对轨迹的收集管理,和分析统计的解耦。模型如下图:
分析Component可以通过jwebap.xml定义,也可以动态的在RuntimeContext中注册。如下:
Jwebap分为两大部分,Jwebap Core和Jwebap Component。
Jwebap Core实现了对Component的管理,轨迹的收集,生命周期,轨迹的磁盘钝化等等,另外,还提供了ByteCode包以实现对代码的注入,集成了模板引擎以实现视图。
Jwebap Component实现各种各样的分析功能,以插件的方式集成于Jwebap,当不需要时,随时可以去掉。
4 Class-Working
Class-Working在Jwebap里面是一个很重要的基础构件。轨迹的收集,目前都是通过字节码操作注入到目标类里面的。
Jwebap默认实现了基于ASM-2.1(asm.objectweb.org)Class-Working构件。结合ASM的访问者模式,Jwebap的注入模型如下:
5 轨迹钝化
对于不活动的轨迹(参照轨迹生命周期),轨迹容器按照一定的算法钝化轨迹到存储设备(可能是磁盘,可能是数据库)。钝化的轨迹文件用作一些特定的统计分析。
也可以日后开发客户端分析工具,进行全量信息的分析。
6 钝化文件分析
客户端钝化文件分析工具。进行全量的数据分析。
7 模版引擎
为了部署方便,Jwebap开发Web统计视图,通过集成第三方的模版引擎实现。在集成层,Jwebap实现客户端MVC框架,模版引擎实现模版语言与容器的实现。
Jwebap通过Servlet作为输出的控制器。
8 数据库监控插件
DBComponent包含两个分析器,FrequencyAnalyser和TimeFilterAnalyser。DBComponent在启动时通过对数据库驱动或者具体的应用获取Connection的类的注入,代理Connection实现分析。
9 方法监控插件
10 Http请求监控插件
11 部署
11.1Step one
把Jwebap_*.*.*_*.jar放到应用的ClassPath下。同时把依赖的jar包也放到应用的ClassPath下(参照13依赖性说明)。
11.2Step two
把jwebap.xml放到工程web module任意目录中。
11.3Step three
修改配置文件:
l jwebap.xml
可以根据需要配置相应的Component,目前实现的Component有:
u HttpComponent
trace-filter-active-time: (ms)超过该毫秒数的执行轨迹将被记录
trace-max-size: 最大记录的超时轨迹数
u MethodComponent
trace-filter-active-time: (ms)超过该毫秒数的执行轨迹将被记录
trace-max-size: 最大记录的超时轨迹数
detect-clazzs: 要监控的类,可以配置包名和类名,如test.*;test.Test,但不支持通配符,多个类名之间通过;分隔
u JdbcComponent
trace-filter-active-time: (ms)超过该毫秒数的执行轨迹将被记录
trace-max-size:最大记录的超时轨迹数
connection-listener: Connection监听器,可配置多个,以;分隔
driver-clazzs:
本地连接池:可以采取配置驱动的方式,比如应用采用oracle,mysql两种数据库,驱动分别是oracle.jdbc.driver.OracleDriver,
com.mysql.jdbc.Driver,那么在DBComponent配置项中配置
driver-clazzs=oracle.jdbc.driver.OracleDriver; com.mysql.jdbc.Driver
jndi远程数据源:可以配置Application中用于获取连接的类作为驱动(比如 com.ConnectionManager)。Jweabp启动时对这些驱动类进行注入,使得所有该类方法返回的Connection具有监控的功能。
l web.xml
增加全局参数config,指向jwebap.xml的位置
<context-param> <param-name>config</param-name> <param-value>/WEB-INF/jwebap.xml</param-value> </context-param> |
配置Jwebap启动类
注意:配置在所有listener之前,以保证Jwebap最先启动,这点对于类增强很重要。
<listener> <listener-class>org.jwebap.core.JwebapListener</listener-class> </listener> |
配置HttpComponent的过滤器。
<filter> <filter-name>PageDetectFilter</filter-name> <filter-class>org.jwebap.plugin.http.DetectFilter</filter-class> <init-param> <param-name>excludeUrls</param-name> <param-value>/detect;/detect/*;*.js;*.jpg;*.htm;*.html;*.gif;*.png;*.css;*.swf</param-value> </init-param> </filter> <filter-mapping> <filter-name>PageDetectFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> |
配置统计视图Servlet。
<servlet> <servlet-name>detect</servlet-name> <servlet-class>org.jwebap.ui.controler.JwebapServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>detect</servlet-name> <url-pattern>/detect/*</url-pattern> </servlet-mapping> |
12 ScreenShot
12.1 Http Traces
12.2 Method Traces
12.3 Jdbc Traces
13 依赖性说明
1) JDK1.4或以上版本
2) log4j-1.2.8.jar
3) commons-digester-1.7.jar
4) commons-beanutils.jar
5) commontemplate-0.8.1.jar
6) commons-logging.jar
配置文件有:
1) Jwebap.xml
14 licence声明
Jwebap采用Apache Licence,内部采用了ASM-2.1RC组件,出于ASM-2.1RC兼容性的考虑,把ASM-2.1RC集成到了组件内部,特此声明。
通过网站的监视,可以查看到网站有哪些链接没有关闭,可以追踪网站被访问的记录等信息。
- Jwebap.rar (1.4 MB)
- 下载次数: 21
发表评论
-
java spring整合websocket教程
2018-03-30 14:30 695在javaweb项目开发中,我们经常可能需要websocke ... -
myeclipse 项目之间类进行引用
2014-11-19 15:54 982相关解决方案: eclipse的Web项目引用方式:(其实相 ... -
myeclipse8 每次启动内存都不够用的解决方案
2014-11-11 15:34 802最近可能由于公司项目大了,启动MyEclipse后经常提示 ... -
web项目集成log4j
2014-11-06 12:39 735Log4j基本使用方法 Log4j由三个重要的组件构成:日 ... -
使用 Jersey 和 Apache Tomcat 构建 RESTful Web 服务
2011-10-25 14:09 1547RESTful Web 服务简介 REST 在 2000 年 ... -
确定操作系统位计数(64位还是32位(X86))
2011-09-30 08:36 1264在此部分查找计算机 ... -
解决“无法删除 指定的文件名无效或太长”的问题
2011-09-16 14:07 2534解决“无法删除 指定的文件名无效或太长”的问题 ... -
网站应用通过139邮箱发送短信做到日志提醒功能
2011-09-15 09:36 1835首先在139注册一个邮箱,然后再邮箱设置中设置收到邮件通过短信 ... -
javamail发送邮件遇到的问题
2011-09-15 09:32 1217今天在用myeclipse写mial功能的时候,想调试一下程序 ... -
http协议的学习笔记
2011-03-01 10:56 1705HTTP请求行 格式:请求 ... -
Logback用户手册中文版.pdf
2011-02-14 16:57 2052Logback用户手册中文版.pdf -
JAVA编写的预警系统
2011-02-10 11:00 6355预警系统 <!-- start content --& ... -
Mediawiki 简明架设指南
2011-02-10 10:03 4685在 Debian/Linux 下 1. 安装程序 sh ... -
xsl 常用.jsp
2011-02-10 09:28 1634现在用的都是有规分律数据, 特殊的数据用XSL. DOM4J ... -
SVN 入门指南
2011-01-14 11:17 1018SVN 入门指南 -
FreeMaker中文手册
2011-01-14 11:15 1063FreeMaker中文手册 -
查看某个网段具体哪些IP没有被使用的命令
2010-11-29 09:01 2924通过运行cmd然后在DOS命令下运行下面程序,表示查看192. ... -
xsl 取数据的时候,当用for-each循环取得数据,怎么取第一行的数据
2010-11-08 11:35 2376需求,打印表格的时候,用for-each 来取得数据,当取到第 ... -
项目过程中,对于绝对路径和相对路径的总结
2010-09-11 09:20 12601.基本概念的理解 绝对路径:绝对路径就是你的主页上的文 ... -
mysql经典语句
2010-09-09 18:18 1270show databases;show tables from ...
相关推荐
内容概要:本文详细介绍了如何利用Matlab构建、优化和应用决策分类树。首先,讲解了数据准备阶段,将数据与程序分离,确保灵活性。接着,通过具体实例展示了如何使用Matlab内置函数如fitctree快速构建决策树模型,并通过可视化工具直观呈现决策树结构。针对可能出现的过拟合问题,提出了基于成本复杂度的剪枝方法,以提高模型的泛化能力。此外,还分享了一些实用技巧,如处理连续特征、保存模型、并行计算等,帮助用户更好地理解和应用决策树。 适合人群:具有一定编程基础的数据分析师、机器学习爱好者及科研工作者。 使用场景及目标:适用于需要进行数据分类任务的场景,特别是当需要解释性强的模型时。主要目标是教会读者如何在Matlab环境中高效地构建和优化决策分类树,从而应用于实际项目中。 其他说明:文中不仅提供了完整的代码示例,还强调了代码模块化的重要性,便于后续维护和扩展。同时,对于初学者来说,建议从简单的鸢尾花数据集开始练习,逐步掌握决策树的各项技能。
《营销调研》第7章-探索性调研数据采集.pptx
Assignment1_search_final(1).ipynb
美团优惠券小程序带举牌小人带菜谱+流量主模式,挺多外卖小程序的,但是都没有搭建教程 搭建: 1、下载源码,去微信公众平台注册自己的账号 2、解压到桌面 3、打开微信开发者工具添加小程序-把解压的源码添加进去-appid改成自己小程序的 4、在pages/index/index.js文件搜流量主广告改成自己的广告ID 5、到微信公众平台登陆自己的小程序-开发管理-开发设置-服务器域名修改成
《计算机录入技术》第十八章-常用外文输入法.pptx
基于Andorid的跨屏拖动应用设计实现源码,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。
《网站建设与维护》项目4-在线购物商城用户管理功能.pptx
区块链_房屋转租系统_去中心化存储_数据防篡改_智能合约_S_1744435730
《计算机应用基础实训指导》实训五-Word-2010的文字编辑操作.pptx
《移动通信(第4版)》第5章-组网技术.ppt
ABB机器人基础.pdf
《综合布线施工技术》第9章-综合布线实训指导.ppt
很不错的一套站群系统源码,后台配置采集节点,输入目标站地址即可全自动智能转换自动全站采集!支持 https、支持 POST 获取、支持搜索、支持 cookie、支持代理、支持破解防盗链、支持破解防采集 全自动分析,内外链接自动转换、图片地址、css、js,自动分析 CSS 内的图片使得页面风格不丢失: 广告标签,方便在规则里直接替换广告代码 支持自定义标签,标签可自定义内容、自由截取、内容正则截取。可以放在模板里,也可以在规则里替换 支持自定义模板,可使用标签 diy 个性模板,真正做到内容上移花接木 调试模式,可观察采集性能,便于发现和解决各种错误 多条采集规则一键切换,支持导入导出 内置强大替换和过滤功能,标签过滤、站内外过滤、字符串替换、等等 IP 屏蔽功能,屏蔽想要屏蔽 IP 地址让它无法访问 ****高级功能*****· url 过滤功能,可过滤屏蔽不采集指定链接· 伪原创,近义词替换有利于 seo· 伪静态,url 伪静态化,有利于 seo· 自动缓存自动更新,可设置缓存时间达到自动更新,css 缓存· 支持演示有阿三源码简繁体互转· 代理 IP、伪造 IP、随机 IP、伪造 user-agent、伪造 referer 来路、自定义 cookie,以便应对防采集措施· url 地址加密转换,个性化 url,让你的 url 地址与众不同· 关键词内链功能· 还有更多功能等你发现…… 程序使用非常简单,仅需在后台输入一个域名即可建站,不限子域名,站群利器,无授权,无绑定限制,使用后台功能可对页面进行自定义修改,在程序后台开启生 成功能,只要访问页面就会生成一个本地文件。当用户再次访问的时候就直接访问网站本地的页面,所以目标站点无法访问了也没关系,我们的站点依然可以访问, 支持伪静态、伪原创、生成静态文件、自定义替换、广告管理、友情链接管理、自动下载 CSS 内的图。
【自然语言处理】文本分类方法综述:从基础模型到深度学习的情感分析系统设计
基于Andorid的下拉浏览应用设计实现源码,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。
内容概要:本文详细介绍了一个原创的P2插电式混合动力系统Simulink模型,该模型基于逻辑门限值控制策略,涵盖了多个关键模块如工况输入、驾驶员模型、发动机模型、电机模型、制动能量回收模型、转矩分配模型、运行模式切换模型、档位切换模型以及纵向动力学模型。模型支持多种标准工况(WLTC、UDDS、EUDC、NEDC)和自定义工况,并展示了丰富的仿真结果,包括发动机和电机转矩变化、工作模式切换、档位变化、电池SOC变化、燃油消耗量、速度跟随和最大爬坡度等。此外,文章还深入探讨了逻辑门限值控制策略的具体实现及其效果,提供了详细的代码示例和技术细节。 适合人群:汽车工程专业学生、研究人员、混动汽车开发者及爱好者。 使用场景及目标:①用于教学和科研,帮助理解和掌握P2混动系统的原理和控制策略;②作为开发工具,辅助设计和优化混动汽车控制系统;③提供仿真平台,评估不同工况下的混动系统性能。 其他说明:文中不仅介绍了模型的整体架构和各模块的功能,还分享了许多实用的调试技巧和优化方法,使读者能够更好地理解和应用该模型。
内容概要:本文详细介绍了基于ADMM(交替方向乘子法)算法在电力系统分布式调度中的应用,特别是并行(Jacobi)和串行(Gauss-Seidel)两种不同更新模式的实现。文中通过MATLAB代码展示了这两种模式的具体实现方法,并比较了它们的优劣。并行模式适用于多核计算环境,能够充分利用硬件资源,尽管迭代次数较多,但总体计算时间较短;串行模式则由于“接力式”更新机制,通常收敛更快,但在计算资源有限的情况下可能会形成瓶颈。此外,文章还讨论了惩罚系数rho的自适应调整策略以及在电-气耦合系统优化中的应用实例。 适合人群:从事电力系统优化、分布式计算研究的专业人士,尤其是有一定MATLAB编程基础的研究人员和技术人员。 使用场景及目标:①理解和实现ADMM算法在电力系统分布式调度中的应用;②评估并行和串行模式在不同应用场景下的性能表现;③掌握惩罚系数rho的自适应调整技巧,提高算法收敛速度和稳定性。 其他说明:文章提供了详细的MATLAB代码示例,帮助读者更好地理解和实践ADMM算法。同时,强调了在实际工程应用中需要注意的关键技术和优化策略。
内容概要:本文深入研究了交错并联Buck变换器的工作原理、性能优势及其具体实现。文章首先介绍了交错并联Buck变换器相较于传统Buck变换器的优势,包括减小输出电流和电压纹波、降低开关管和二极管的电流应力、减小输出滤波电容容量等。接着,文章详细展示了如何通过MATLAB/Simulink建立该变换器的仿真模型,包括参数设置、电路元件添加、PWM信号生成及连接、电压电流测量模块的添加等。此外,还探讨了PID控制器的设计与实现,通过理论分析和仿真验证了其有效性。最后,文章通过多个仿真实验验证了交错并联Buck变换器在纹波性能、器件应力等方面的优势,并分析了不同控制策略的效果,如P、PI、PID控制等。 适合人群:具备一定电力电子基础,对DC-DC变换器特别是交错并联Buck变换器感兴趣的工程师和技术人员。 使用场景及目标:①理解交错并联Buck变换器的工作原理及其相对于传统Buck变换器的优势;②掌握使用MATLAB/Simulink搭建交错并联Buck变换器仿真模型的方法;③学习PID控制器的设计与实现,了解其在电源系统中的应用;④通过仿真实验验证交错并联Buck变换器的性能,评估不同控制策略的效果。 其他说明:本文不仅提供了详细的理论分析,还给出了大量可运行的MATLAB代码,帮助读者更好地理解和实践交错并联Buck变换器的设计与实现。同时,通过对不同控制策略的对比分析,为实际工程应用提供了有价值的参考。
《综合布线施工技术》第8章-综合布线工程案例.ppt