我目前想对之前写的一个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
分享到:
相关推荐
SQL Server Profiler 是一个强大的工具,用于监测 SQL Server 数据库的性能和行为。它允许管理员实时查看和记录数据库发生的各种事件,例如查询执行、锁定、错误等,从而帮助诊断性能问题和异常。以下是对 SQL ...
"Laravel开发-profiler"是一个专门针对Laravel 4设计的调试工具,它的目的是提供对应用运行时性能的详细分析。本文将深入探讨这个profiler,以及它在Laravel开发中的作用。 首先,Laravel 4是一个流行的PHP框架,以...
【描述】"A simple profiler class一个简单的轮廓类(5KB)" 暗示了这个Profiler类设计得非常小巧,可能只包含了基本的计时和报告功能,不涉及复杂的统计分析或可视化。它的体积小,意味着它对目标应用程序的影响也很...
至于压缩包内的文件,"Keygen.exe"可能是一个密钥生成器,用于生成Ants Performance Profiler 8的激活码,这在软件授权过程中是非法的。合法使用软件应通过官方渠道购买。而"DotNETDeveloperBundle.exe"可能是.NET...
`access_profiler`工具正是为解决这一需求而生,它专注于统计C++程序中成员变量的访问情况,为开发者提供宝贵的性能分析数据。本文将深入探讨`access_profiler`的原理、使用方法以及如何利用其输出的数据来优化代码...
总的来说,Snapdragon Profiler 2023.5是一个强大的移动设备性能分析工具,特别适用于图形密集型应用的开发和优化。通过对GPU行为的深入洞察,开发者能够提升应用的流畅度、降低功耗,同时确保高质量的视觉效果。...
Snapdragon Profiler是一款由高通公司为基于Snapdragon处理器的设备设计的专业性能分析工具,主要用于优化应用程序在这些设备上的运行效果。v2.2版本带来了更先进的功能和改进,以帮助开发者更好地理解和优化他们的...
在色彩管理领域,i1Profiler是一款不可或缺的专业工具,主要用于创建精确的ICC曲线,实现色彩的一致性和准确性。本文将深入探讨i1Profiler的功能、安装步骤以及如何利用其进行色彩校正。 首先,我们要理解i1...
5. **.NET Compact Framework 支持**:对于开发针对移动设备和嵌入式系统的 .NETCF 应用程序,EQATEC Profiler 是一个独特的工具,因为它专门针对这个框架进行了优化。 6. **优化建议**:除了提供数据,EQATEC ...
Profiler是针对NHibernate的一个重要辅助工具,专为了解析、优化和调试NHibernate在应用程序中的行为。"NHibernate.Profiler-v5.0-Build-5028" 版本是针对NHibernate 5.0设计的,用于提供执行过程的详细分析。 这个...
Ants Performance Profiler 8,由Red Gate Software公司开发,是一款专为.NET开发者设计的高性能分析工具,旨在帮助开发者深入理解应用程序的运行状况,定位并解决性能瓶颈,以及防止内存泄露。此最新版包含了两个...
总之,Snapdragon Profiler是一个强大的Android开发者工具,专为利用Snapdragon芯片的设备设计,旨在提供显存、纹理和着色器等方面的详细性能数据,帮助开发者优化应用程序,提升用户体验,同时降低功耗。...
CLRProfiler是一款专为.NET Framework设计的强大性能分析工具。它的全称是Common Language Runtime (CLR) Profiler,由微软提供,用于帮助开发者深入了解他们的.NET应用程序在运行时的行为,尤其是在内存管理和CPU...
Adrenoprofiler是一款专为GPU性能分析和调试设计的强大工具,尤其在移动设备领域中,它对于优化图形处理和游戏性能具有重要意义。该工具主要针对高通公司的Adreno系列GPU,这些GPU广泛应用于各种Android智能手机和...
由于"gtk-sharp-2.12.44.msi"是一个MSI安装包,它是专为Windows设计的安装程序格式,用于在Windows系统上部署GTK#环境。在安装Snapdragon Profiler之前,需要先安装这个包,确保系统具有运行Snapdragon Profiler所需...
"前端开源库-v8-profiler-node8"是专为前端开发者设计的一个工具,它针对Node.js 8.x版本提供了V8 JavaScript引擎的性能分析功能。这个开源库的核心是V8 profiler,它是Google Chrome浏览器内核V8引擎的一部分,用于...
.NET Memory Profiler,正如其名,是一款专为.NET应用程序设计的内存分析工具。它与传统的WinDbg调试器相比,具备更友好的图形用户界面,使得开发者无需深谙复杂的命令行操作,也能轻松地进行内存诊断。它的主要功能...
Flask_Profiler是针对Flask框架设计的一个性能监控和分析库,版本0.6提供了一套完整的解决方案,用于追踪和记录应用的运行时间、内存消耗等关键指标。通过集成到Flask应用中,开发者可以在实际运行环境中获取详尽的...
Adreno Profiler是由高通公司开发的一款专业级图形性能分析工具,专为优化Android设备上的游戏和图形密集型应用而设计。这款软件的主要功能是对运行在Adreno GPU上的应用程序进行性能分析,特别是针对游戏中的纹理...
- 选中“Retrieve Debug Symbols...”,此选项允许从微软官方网站下载 PDB 符号文件,并设置一个目录用于缓存已下载的符号文件。 - 如果有额外的符号文件存放路径,则可以通过“Additional Symbols file locations...