惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
DataBreaches.Net
V
Vulnerabilities – Threatpost
C
CERT Recently Published Vulnerability Notes
Google DeepMind News
Google DeepMind News
GbyAI
GbyAI
Y
Y Combinator Blog
T
Threatpost
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Project Zero
Project Zero
Engineering at Meta
Engineering at Meta
MongoDB | Blog
MongoDB | Blog
MyScale Blog
MyScale Blog
Security Latest
Security Latest
T
Threat Research - Cisco Blogs
量子位
I
Intezer
Simon Willison's Weblog
Simon Willison's Weblog
C
Cybersecurity and Infrastructure Security Agency CISA
L
Lohrmann on Cybersecurity
L
LINUX DO - 最新话题
The Register - Security
The Register - Security
T
Tailwind CSS Blog
爱范儿
爱范儿
Google DeepMind News
Google DeepMind News
T
Troy Hunt's Blog
Stack Overflow Blog
Stack Overflow Blog
Cloudbric
Cloudbric
S
Secure Thoughts
The GitHub Blog
The GitHub Blog
T
The Blog of Author Tim Ferriss
L
LangChain Blog
Recorded Future
Recorded Future
小众软件
小众软件
www.infosecurity-magazine.com
www.infosecurity-magazine.com
T
Tor Project blog
人人都是产品经理
人人都是产品经理
F
Full Disclosure
O
OpenAI News
Webroot Blog
Webroot Blog
A
Arctic Wolf
TaoSecurity Blog
TaoSecurity Blog
P
Privacy & Cybersecurity Law Blog
Jina AI
Jina AI
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
雷峰网
雷峰网
Microsoft Security Blog
Microsoft Security Blog
H
Heimdal Security Blog
B
Blog RSS Feed
Vercel News
Vercel News

监控宝

100-300 元之间有哪些户外监控推荐? - V2EX 算命的应该已经开始使用人脸识别了吧。 - V2EX K8s 监控是真的难做呀,感觉没有啥头绪 - V2EX 求问国内第三方监控平台有哪些? - V2EX 想给家里整套监控 - V2EX 有奖体验 赢畅销书|体验透视宝业务监控 一眼定位业务故障 - V2EX [重磅新品]自动发现业务拓扑,精准定位根源问题 - V2EX 邀请体验|从业务拓扑图开始 搞定业务运维 - V2EX 游戏平台运维自动化扩展之故障自愈 - V2EX 不容错过 | 一大波新功能来袭 坑爹双十一零点秒杀背后的 API 性能问题初探 - V2EX 不容错过 | 一大波新功能来袭 大促之前 必先压测--压测宝助您决战双 11 - V2EX 监控宝的销售来一发,我们谈谈企业版的 Api 功能 - V2EX B 站运维团队成长的血泪史 - V2EX 感受真实性能压测的“洪荒之力” 压测宝有奖体验中 - V2EX 重磅 | 打造云端压力测试产品,准确感知性能瓶颈 - V2EX 互联网金融网站性能排行榜 - V2EX 来一场说聊就聊的压测分享 - V2EX 选择合适的监控指标 确保跨境电商网站业务稳步增长 - V2EX Hadoop 大数据生态系统及常用组件简介 - V2EX Google 对象描述语言 Jsonnet 应用经验谈 - V2EX 十大性能监控技巧 全面提升你的应用体验 - V2EX 监控宝新增国内 7 地监控节点,看看有没有覆盖你们的业务地区~ - V2EX 无压测 不狂欢 压测宝助您决战 618 - V2EX 监控宝经常轰炸我邮箱啊。。 - V2EX 透视宝 H5 性能管理新鲜出炉 免费体验 - V2EX 支付宝付款的时候, 手机闪关灯依旧会亮一下 - V2EX 服务器宕机后自动重启的简化方法 - V2EX 监控宝新增马来西亚等 7 个监控点 - V2EX 文轩在线:如何让 IT 部门成为企业的价值中心 - V2EX 监控宝妙招:批量修改告警通知联系人 - V2EX 监控宝的日报、周报的取消在哪里?(一图胜千言) - V2EX | 监控宝产品满意度调查 |即可得 20 元话费。 - V2EX 监控宝新增国内及海外监测点--请戳这里~~ - V2EX 监控宝产品功能:一键暂停/开启群组成员短信告警 - V2EX 监控宝 API 监控全面升级 - V2EX 监控宝国际版正式上线 龙珠直播使用透视宝性能管理服务的案例分享 [云干货分享] 发布自动化技术 Release Automation 详解 - V2EX 云智慧透视宝 PHP 应用性能监控实现原理 - V2EX 运维生存时间呕血之作:网站运维黑锅如何甩 - V2EX [干货] 前方高能!如何保障 Python 应用的高性能 - V2EX 监控宝同类产品还有哪些?或者说竞争对手有哪些相近的产品 - V2EX [干货] 解密监控宝 Docker 监控实现原理 - V2EX 干货 | Docker 文件系统的分层与隔离 - V2EX 监控宝惹火 Docker 监控,开放试用中 - V2EX 全球顶级应用性能监控管理服务商分析 - V2EX 云智慧首席架构师-从西直门立交桥谈 IT 架构与重构 - V2EX
云智慧透视宝 Java 代码性能监控实现原理 - V2EX
cloudwise · 2015-10-28 · via 监控宝

一、 Java 平台体系及应用场景

从 1995 年 Sun Microsystems 公司正式推出 Java ,到 2006 年时 Sun 公司将其开源,迄今为止已经有了 20 年的历史。 Java 本身已不仅仅只是一门面向对象的编程语言,而是由一系列计算机软件和规范形成的技术体系,这个技术体系提供了完整的跨平台开发与部署的支持,实现“一次编写、到处运行”的目的。 Java 已经广泛的应用于嵌入式、移动终端、企业服务器、大型机等各种场合。
Sun 官方所定义的 Java 技术体系包括如下几个组成部分:
* Java 程序设计语言
* 各种硬件平台上的 Java 虚拟机
* Class 文件格式
* 来自商业机构和开源社区的第三方 Java 类库

图: Jaa 技术体系组件图
Java Virtual Machine(JVM)是 Java 体系的基础,负责解释、编译执行.class 文件形式的字节码,同时负责内存管理、热点代码检测和运行时编译优化。正是由于有了虚拟机的基础,才使 Java 实现了“一次编写、到处运行”。 Java 这 20 年的发展,其实更是虚拟机的发展过程。期间经历了 Sun 、 BEA 公司各自开发的虚拟机, 2009 年之后, ORACLE 将这两家公司收购,并将这些虚拟机取长补短、合二为一。目前还是开源的虚拟机 OpenJDK ,可供爱好者学习研究用。
JRE 部分是支持 Java 程序运行的标准环境。 JDK 是 JRE 的超集,包含 JRE 的一切,再加上工具如编译器、调试器等。

二、 Java 性能监控需求

对于一个企业的应用系统,大多数情况下,肯定是由多种编程语言开发的各种系统的集成。我们都非常关心系统的可用性、及时响应性、资源的消耗,比如 CPU 、内存、各种 I/O 、网路带宽等消耗情况。对于这些问题的性能瓶颈点,我们一般可以归纳为外部服务(如第三方 API )、资源读写、代码异常。如果在发生这些问题时,能够及时完整的抓拍记录保留下来,那么对于我们解决问题将会提供充足的证据,解决问题会变的非常容易。

对于 Java 应用系统来说, JVM 自身提供了相应的性能监控手段和工具,经常在出现问题后,比如内存泄漏或溢出时,我们会通过 jmap 命令导出堆的转储快照,利用相应的命令 jhat 或其他相应的第三方内存分析工具来分析对象的占用情况。

响应缓慢时,我们可能会用 jstat 监视命令、或 jdk 的可视化工具 jconsole 、 visualvm 来分析 JVM 的垃圾回收类型、回收频率,来推测是否是垃圾回收导致的。有可能我们还要接着分析线程转储快照,通过 jstack 取出线程的栈快照,来分析是否有真死锁、死循环导致的相应缓慢、资源负载高等情况。

当有问题出现时,许多开发人员可能都是比较盲目的用这些工具来试探性定位问题,而大多数情况下,这种试探会无功而返。因为这些分析工具主要是侧重 Java 单方面的分析,比如该系统调用第三方 API ,如果第三方 API 有问题,是无法监控到的。还有像文件、 DB 资源的访问也是是无法监控到的。

而且,只有对 Java 虚拟机机制较为熟悉的高级开发人员才能比较好的运用、理解这些工具,对于大多数普通 Java 开发人员来说,这些问题只会令他们束手无策。

像外部服务(如第三方 API )、资源读写、代码异常这些瓶颈点,需要通过代码级别的监控才能直接、快速、有效的找到症结所在。调用第三方 API 的耗时、资源访问的耗时、代码抛出的非预知异常,这些常见问题代码监控完全能够监控到,并能够实时抓拍记录,一旦有问题可以快速还原事故问题现场。通过代码级别监控发现问题后,也可以在辅助利用虚拟机内置监控工具进行进一步的定位。

三、透视宝 Java 监控实现原理

图: Java 的执行模型

在 Java 的执行体系中,由.Java 源码文件编译后的.class 字节码文件,可以理解为中间语言。

图:透视宝 Java 监控实现原理

图:透视宝 Java 监控实例运行图

1 、字节码 load 至 JVM 时发生了什么
* 回调函数注册完毕后,凡是当有任何的 class 文件即将被类加载器加载前,都
会执行回调函数 transform ,在此方法内实现的类改变操作。
* 实现的 transform 方法中,我们使用的是 ASM 字节码操作框架, ASM 从二进制
形式的类文件中读取、分析类的信息,然后修改改变类的行为。
* transform 方法的基本代码形式如下:

2 、如何实际改变类行为
* 在依赖于 ASM 基础之上,我们抽象出这样的业务模型

* 常用的拦截探针

* 常用的运行时拦截处理器

* 支持的拦截定义过滤器规则

* 该业务模型对应的行为

定义拦截描述时,指定过滤拦截哪些类、哪些方法,然后,在这些行为的点上,可以埋入探针、处理器。重写 visitCode 、 visitInsn 、 visitMaxs 分别实现方法进入、返回、异常的相关操作改写。

四、透视宝 Java 监控部署流程

1 、登录云智慧透视宝官网,点击页面右上角导航的“免费试用”,正确填写免费试用的申请信息后会弹出下面的对话框,同时激活邮件会自动发送到你的邮箱中,按照流程注册帐号即可。

2 、注册成功后,登录透视宝,点击配置-应用,在配置页面中下载安装 Smart Agent 。安装成功后, Smart Agent 会根据系统配置自动获取主机信息,大致两分钟后,您就可以在“主机→服务器”模块中查看该服务器的 CPU 、内存、网卡、磁盘及进程等性能数据。

3 、如果要监控应用运行时代码、主机中服务和数据库性能数据,您需要进一步安装和配置 Smart Agent 提供的各种插件,这是因为 Smart Agent 实现了一种开放式的插件式结构,对每个运行时代码、服务和数据库的监控都是通过相应的插件来实现的。

Smart Agent 在安装完成后,加载过程中自动发现你的应用组件,如果没有自动监测到 Java 环境,也可以手动添加 Java Agent 。如上图所示,点击“管理”入口,进入“插件管理”,点击页面下部的“添加服务”,选择 JavaAgent 后,点击“创建”。
创建完毕后,点击“ ON ”。(该 ON 操作只是初始化用户的信息,以便以后采集到的信息能够正确的回传给该用户。)

以上都操作完后,在{smartagent 的安装路径}/plugins ,就会看到如下形式的

在到{smartagent 的安装路径}/plugins/JavaAgent_1442476463X1002x0/conf 文件夹下,查看 app.conf 文件,看看该文件内的 HostKey 的值是否是如下类似的加密形式

以上情况,表明 JavaAgent 已经下载启动初始化成功。
4 、安装 JavaAgent 至各种应用服务器上,如 tomcat\jboss\weblogic 。(该操作参考官网 https://www.toushibao.com/即可)
5 、只要启动相应服务器,然后访问您的应用 url 即可,该 url 对用的代码执行情况即可呈现给您,一旦出现缓慢问题也一目了然。如下图示意

五、透视宝 Java 代码性能监控特点

在功能方面,透视宝无论是在 Java ,还是其他如.NET 、 PHP 等主流语言的监控上,都包括:查看执行最慢的 10 个元素,包括元素执行次数、持续时长和占用时长百分比;查看 HTTP 请求参数,包括请求的响应状态、链接页面、具体的请求参数及返回结果;查看代码执行堆栈的详细树状信息,包括每个方法的计算时间、总耗时和被调用的次数,您能直接看到特殊标识的最慢方法;查看涉及 SQL 语句的总耗时排序,包括 SQL 执行总耗时、执行次数和具体的查询语句;第三方 API 调用。

端到端性能监控示意图

在性能方面,云智慧透视宝的 JavaAgent 代码监控探针包,对用户的性能影响到底有多大?从安装包本身来看,它非常小,仅为 1.5M 。在不安装 Java 探针包和安装 Java 探针包,分别运行应用。经过测试对比, CPU 使用率差值、内存消耗差值、 TPS 差值均在 5%以内。
云智慧官网: www.cloudwise.com
透视宝官网: www.toushibao.com