利用btrace工具监控在线运行java程序
下载主页:kenai.com/projects/btrace/downloads/directory/releases/release-1.2.4
Windows版本: kenai.com/projects/btrace/downloads/download/releases/release-1.2.4/btrace-bin.zip
Linux版本: kenai.com/projects/btrace/downloads/download/releases/release-1.2.4/btrace-bin.tar.gz
三、安装及使用指导
1)windows 安装指导
- 建立存放btrace的目录,如d:/btrace
- 将btrace-bin.zip内容解压到此目录
- 在d:/btrace目录下,新建btrace_script目录,用于存放监控脚本(其实监控脚本放在哪里都是可以的)
- mkdir btrace
- 将btrace-bin.tar.gz上传到此目录
- tar -xvf btrace-bin.tar.gz
- cd bin
- chmod 755 *
- 在btrace目录下,mkdir trace_script,用于存放监控脚本
3)运行指导
1.Windows
i.打开命令行窗口,切换至bin目录,执行:btrace.bat pid ../btrace_script/TraceTest.java (其中pid为要监控的java进程的ID,可以通过jps命令查看正在运行的所有java进程的ID)
ii.退出时按Contrl+c,再按1
2.Linux
i.在bin目录下,执行:./btrace pid ../trace_script/TraceTest.java (其中pid为要监控的java进程的ID,可以通过jps命令查看正在运行的所有java进程的ID)
ii.退出时按Contrl+c,再按1
注:运行命令还可以补充其他的参数,[-I <include-path>] [-p <port>] [-cp <classpath>],详见btrace压缩包中docs/usersguide.html,其中-p参数用于指定btrace监听的端口,默认为2020,如果被其他程序占用了,则必须使用此参数指定其他的可用端口
4)编写监控脚本指导
新建一个普通的java工程,将btrace-bin.zip/build下3个jar包加入编译路径中,然后就可以进行监控脚本开发了。(所谓的监控脚本,也是普通的java程序,只是编译和执行方式不同于普通程序)
四、针对典型场景的监控脚本
五、常用函数说明
1. 判断类型 instanceof
2. 打印当前线程调用栈 BtraceUtils.Threads.jstack()
3. 打印所有线程栈 BtraceUtils.Threads.jstackAll()
4. 连接字符串 BtraceUtils.Strings.strcat
5. 打印BtraceUtils.print/println
6. 获取当前时间BtraceUtils.timestamp("yyyyMMddHHmmss)
7. 整形转字符串 Strings.str()
8. 获取当前线程名 Threads.name(Threads.currentThread())
9. 获取java运行环境系统属性 Sys.Env.property 等同于System.getProperty
10. 获取对象类名 Reflective.name(Reflective.classOf(obj)
11. 取对象属性值
方式1:
函数参数中直接引用参数类
Field field = Reflective.field("cn.jerry.User","name");
print(Reflective.get(field,user);
方式2:
函数参数中不指定具体参数,使用AnyType[] args,在函数体内使用如下方式获取:
Field field = Reflective.field("cn.jerry.User","name");
print(Reflective.get(field,args[0]);
参考资料:
BTrace简介:http://blog.csdn.net/mgoann/article/details/7268508
原理研究:http://www.iteye.com/topic/1005918
源代码:kenai.com/projects/btrace/sources/hg/show
利用btrace工具监控在线运行java程序的更多相关文章
- JAVA设置环境变量和在DOS下运行java程序
在学校实训的这几天,老师带着我们开始深入的复习java.这是第一天的内容哦 对于“JAVA设置环境变量和在DOS下运行java程序”,许多初学者是陌生的,但了解这个却对后期的学习很重要. http:/ ...
- 通过jstack定位在线运行java系统故障_案例1
问题描述: 在一个在线运行的java web系统中,会定时运行一个FTP上传的任务,结果有一天发现,文件正常生成后却没有上传. 问题初步分析: 1.查看日志文件 发现这个任务只打印了开始进入FTP处理 ...
- Java 监控基础 - 使用 JMX 监控和管理 Java 程序
点赞再看,动力无限.Hello world : ) 微信搜「程序猿阿朗 」. 本文 Github.com/niumoo/JavaNotes 和 未读代码网站 已经收录,有很多知识点和系列文章. 此篇文 ...
- windows批处理运行java程序
明确需求 今天你编了一个java swing版照片查看器,想让计算机上的所有照片默认打开方式都改成你的照片查看器. 使用工具软件 很多工具软件都是不把jre打包到exe中的,这就是说打包之后的exe只 ...
- Java魔法堂:以Windows服务的形式运行Java程序
一.前言 由于防止维护人员误操作关闭Java控制台程序,因此决定将其改造为以Windows服务的形式运行.弄了一个上午总算搞定了,下面记录下来,以供日后查阅. 二.Java Service Wrapp ...
- 1.配置EditPuls-编译和运行java程序
1.工具>配置自定义工具 2.添加工具>程序 1).编译java程序 2).运行java程序
- java的windows自动化-自动运行java程序
那么在一些工具齐全并且已经有了一定的写好的java程序的情况下(环境变量和软件见上一章http://www.cnblogs.com/xuezhezlr/p/7718273.html),如何自动化运行j ...
- 在云端服务器centos7安装jvm并且运行java程序
(1)在云端服务器 下载jdk http://www.linuxidc.com/Linux/2016-09/134941.htm(大致看这个文章后可以下载一个jdk的压缩包,然后将压缩包解压) 然后, ...
- Jenkins 构建运行java程序
我们将在Jenkins建立执行一个简单的 HelloWorld 应用程序,构建和运行Java程序.打开网址:http://localhost:8080/jenkins 第1步- 转到Jenkins 仪 ...
随机推荐
- java开发经验分享(四)
四. 关于测试 1. 在整个项目计划中,测试时间安排的合理性,对测试阶段的情况应作充分预计,不可为了赶发布点而忽略质量. 2. 务必清楚产品包.更新包.bug包的提交规范.具体请参照<开发规范手 ...
- VS项目如何添加到svn
SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS.这里就讲一下VS2010如何将项目导入SVN版本控制. 工具 ...
- xdu_RainAndBow 鞍山打铁记
我们作为弱校xdu的七队(大四一支,大三四支,大二俩),本来都没指望今年可以出去,结果运气不错,学校得到几个激动名额, 于是我们激动地成功申请到了鞍山站的名额,嗯...可以出去旅游了. 不过我们毕竟太 ...
- poj1305:概念水题
了解一下毕达哥拉斯三元组概念= = 暴力求出所有的本源三元组即可 代码: #include <iostream> #include <stdio.h> #include< ...
- js面向对象的五种写法
第一种: //第1种写法 function Circle(r) { this.r = r; } Circle.PI = 3.14159; Circle.prototype.area = functio ...
- MySql 查询表字段数
MySql 查询表字段数 SELECT COUNT(*) FROM information_schema.columns WHERE table_schema='test_cases' AND tab ...
- 【POJ2114】Boatherds 树分而治之
做广告: #include <stdio.h> int main() { puts("转载请注明出处[vmurder]谢谢"); puts("网址:blog. ...
- compass模块----Utilities----Sprites精灵图合图
css雪碧图又叫css精灵或css sprite,是一种背景图片的拼合技术.使用css雪碧图,能够减少页面的请求数.降低图片占用的字节,以此来达到提升页面访问速度的目的.但是它也有令人诟病的地方,就是 ...
- ajax请求webservice时抛出终止线程的异常
请求webservice中以下接口,会抛出异常 {"Message":"正在中止线程.","StackTrace":" 在 Sys ...
- WebApi2官网学习记录---异常处理
HttpResponseException 当WebAPI的控制器抛出一个未捕获的异常时,默认情况下,大多数异常被转为status code为500的http response即服务端错误. Http ...