我目前想对之前写的一个profiler工具进行重构,和大家探讨一下我设想的一些思路。
首先,在设计中包含一个重要的概念-----轨迹。
1)轨迹的定义
在系统中,任何程序的执行都有可能留下轨迹(数据库的调用会留下SQL轨迹,事务的轨迹,http请求会留下访问的轨迹,程序的方法执行也可以留下轨迹)。
轨迹包含了对性能分析有用的信息(比如上下文的信息,线程堆栈的信息,执行时间的信息等等),轨迹之间存在关系,比如数据库事务的轨迹和SQL的轨迹,http请求和类方法执行的轨迹之间都有一定的关系。在性能分析中,我们可能存在几个关注点,比如数据库,远程调用,方法调用,组件等等,通过这些关注点相关程序留下的轨迹,我们进行性能分析。
2)轨迹的管理
轨迹是错综复杂的,零碎地,关系模糊的,所以要真正有助于性能分析,还需要相应的支持。所以,轨迹又需要生命周期管理,和统计管理。
轨迹的生命周期管理:轨迹创建----到销毁的各个状态,有些时候,对于有问题的轨迹(比如执行时间过长),我们不希望销毁轨迹,我们把这部分轨迹保留下来供性能分析。
轨迹的统计:不同关注点的轨迹,存在不同的统计逻辑,通过统计,展现给性能分析者,统计的逻辑可能很多样,组件必须保持这方面的扩展。
3)轨迹的注入
轨迹不会自己产生,我们也不可能修改系统的代码。而我又不想像其他的一些分析工具一样,通过本地接口获取JVM的状态从而进行统计(那样就得依赖JVM,依赖OS)。现在我唯一能想到的办法,是采用classworking。目前,我已经实现了一个ClassEnhancer,它能够对指定的类在现有ClassLoader模型采用父子委托模型的情况下很好的对类进行inject(如果不是这种模型,有可能在某些很特殊的部署方式下inject失败)。
1)构件模型
组件的内部构件包括:
核心构件:包含轨迹,轨迹的生命周期,轨迹的统计
bytecode构件:可以对类进行inject,采用最通用的代理模式invokehandle模式。
各种监控的构件:依赖于核心构件(有可能也依赖于bytecode构件)构造各种监控构件,比如数据库监控构件,类方法监
控构件等等,构件可能扩展统计逻辑,现在对于这种构件还没有想好怎么样定义他们的统一行为,我希望以后可以再此基础上由第三方扩展新的监控构件。
配置构件:没什么好说的。。。
界面:目前我是采用servlet,不知道大家有没什么好建议,像现在其他的profiler似乎都采用swing,这样做似乎部署挺成
问题,我希望组件适用于生产环境,而不只是监控监控测试环境,那样分析不出什么,但是servlet做出来的界面效果。。。
2)部署
我希望部署越简单越好,现在我能够做到的配置,需要配置各种统计策略数据,但是数据库监控的数据配置比较繁琐,主要是由于,之前数据库监控构件不是基于classworking实现 ,而是采用代理连接池实现。不过现在可以通过classworking在数据库驱动这层进行注入。
先写这么多,也算整理一下自己的思路,欢迎大家提出新的想法。
- 描述: 现有数据据库监控设计模型,以后改为注入方式,而不采用代理
- 大小: 59 KB
分享到:
相关推荐
BuiltWith是一个网站分析工具。在查找页面时,BuiltWith返回它可以在页面上找到的所有技术。BuiltWith的目标是帮助开发人员,研究人员和设计人员找出正在使用哪些技术,这可能有助于他们决定实施哪些技术。 Built...
介绍nRF Connect Power Profiler是与进行通信的工具,该工具是一种经济实惠且灵活的工具,可用于获取设计的实时电流测量值。 它还支持的。 PPK测量连接的Nordic开发套件或任何外部板的电流消耗。 它为用户应用程序...
6.2 创建一个基本的 Nios 设计 6.3 GDB 调试 6.4 添加用户外设 6.5 RTL 仿真 6.6 Flash 编程 6.7 用户指令和 DMA 6.8 MP3 播放器 附录 1:Nios 嵌入式处理器 32 位指令集 附录 2:Nios 嵌入式处理器...
事件保存在一个跟踪文件中,可在以后对该文件进行分析,也可以在试图诊断某个问题时,用它来重播某一系列的步骤。SQL Server Profiler 用于下列活动中: •逐步分析有问题的查询以找到问题的原因。 •查找并诊断...
Oracle SQL Profiler,自己设计算法写的一款非常好用的抓取Oracle数据库SQL语句的工具,可以再没有源码的情况下监控ORACLE数据库服务器的v$sqlarea视图抓取出从点击开始按钮到点击结束按钮期间执行过的SQL语句。...
纳斯达克:ARMHY)在美国加州圣克拉拉(Santa Clara)举行的ARM开发者大会上发布了RealView Profiler,这一独一无二的工具被专门设计用来实现对那些工作量从几分钟、几小时到几天的实际系统进行软件性能和代码覆盖的...
另外《Oracle优化日记:一个金牌DBA的故事》第一次详尽地披露了Oracle数据库内部存储结构,并公布了部分代码,对于有兴趣研究数据库内部存储结构或者编写dul工具的读者有一定的参考价值。《Oracle优化日记:一个金牌...
SRDebugger是一个帮助您在目标设备上跟踪bug的工具。 在你的游戏的任何版本中访问Unity控制台都允许你诊断问题,而不需要部署一个绑定到Unity编辑器的调试版本。 options选项卡可以帮助你调整参数和调用方法,从而...
系统设计实例 6.1 建立硬件需求 6.2 创建一个基本的Nios设计 6.3 GDB调试 6.4 添加用户外设 6.5 RTL仿真 6.6 Flash编程 6.7 用户指令和DMA 6.8 MP3播放器 附录1:Nios嵌入式...
作为一个管理员,你应该预先阻止或最小化问题,并当问题发生时,诊断原因并尽可能的做出正确的操作来解决问题。这片白皮书所述的问题通常来源于Microsoft® Corporation 的Customer Support Service(CSS or PSS)...
《SQL Server 2008高级程序设计》由世界顶尖SQL Server权威专家Robert Vieira编写,旨在指导您熟练运用一系列日趋复杂的功能,助您更高效地管理数据。 本书首先介绍SQL Server 2008的新功能,然后在更详实的示例...
8.8 使用VIEW METADATA使自己的视图看起来像一个表 8.9 索引(物化)视图 8.10 分区视图 8.11 小结 第9章 脚本和批处理 9.1 脚本的基本概念 9.2 批处理 9.3 SQLCMD 9.4 动态SQL:使用EXEC命令...
配合数据库系统的开发技巧,构建一个完整的“网站数据库”。 本书可作为网站数据库开发人员的学习用书, 同时也可作为网页制作爱好者的参考手册。 目 录 第1章 架设网站……………………………….1 1-1 ...
6.2 创建一个基本的Nios 设计 6.3 GDB 调试 6.4 添加用户外设 6.5 RTL 仿真 6.6 Flash 编程 6.7 用户指令和DMA 6.8 MP3 播放器 附录 1:Nios 嵌入式处理器 32 位指令集 附录 2:Nios 嵌入式处理器...
分析一个或多个数据库的工作负荷和物理实现,工作负荷可以是优化的sql语句或者sqlserver profiler的跟踪文件和数据表。我们可以在运行引擎优化顾问前运用sqlserver profiler记录一些事件,然后将跟踪结果存储为...
8.8 使用VIEW METADATA使自己的视图看起来像一个表 8.9 索引(物化)视图 8.10 分区视图 8.11 小结 第9章 脚本和批处理 9.1 脚本的基本概念 9.2 批处理 9.3 SQLCMD 9.4 动态SQL:使用EXEC命令...
8.8 使用VIEW METADATA使自己的视图看起来像一个表 8.9 索引(物化)视图 8.10 分区视图 8.11 小结 第9章 脚本和批处理 9.1 脚本的基本概念 9.2 批处理 9.3 SQLCMD 9.4 动态SQL:使用EXEC命令...
8.8 使用VIEW METADATA使自己的视图看起来像一个表 8.9 索引(物化)视图 8.10 分区视图 8.11 小结 第9章 脚本和批处理 9.1 脚本的基本概念 9.2 批处理 9.3 SQLCMD 9.4 动态SQL:使用EXEC命令...
3.1 SQL Profiler工具 58 3.1.1 Profiler跟踪 59 3.1.2 事件 60 3.1.3 数据列 62 3.1.4 过滤器 64 3.1.5 跟踪模板 65 3.1.6 跟踪数据 65 3.2 跟踪的自动化 66 3.2.1 使用GUI捕捉跟踪 66 3.2.2 使用存储过程...
8.8 使用VIEW METADATA使自己的视图看起来像一个表 8.9 索引(物化)视图 8.10 分区视图 8.11 小结 第9章 脚本和批处理 9.1 脚本的基本概念 9.2 批处理 9.3 SQLCMD 9.4 动态SQL:使用EXEC命令...