Java生产环境下性能监控与调优详解
久许
朋友拍了拍我,说我可不是什么幺蛾子
展开
-
psi-probe监控
在github中获取git clone https://github.com/psi-probe/psi-probemvn clean package -Dmaven.test.skipweb/target/probe.war部署到tomcat下实际上该项目也是使用java编写的一个web工程,...翻译 2019-08-23 21:57:52 · 1058 阅读 · 0 评论 -
btrace拦截复杂参数、环境变量、正则匹配拦截
拦截this、入参、返回this:@Self入参:可以用AnyType,也可以用真是类型,同名的用真实的返回:@Return获取对象的值简单类型:直接获取复杂类型:反射,类名+属性名演示获取一个对象的值,如User对象之前是通过拦截User对象的构造函数来获取User对象的实例的值。现在通过读取这个对象里面的值。编写btrace脚本package com.imooc.m...翻译 2019-08-22 20:30:01 · 467 阅读 · 0 评论 -
拦截返回值、异常、行号
拦截时机Kind.ENTRY:入口,默认值Kind.RETURN:返回Kind.THROW:异常Kind.Line:行拦截函数的返回值package com.imooc.monitor_tuning.chapter4;import com.sun.btrace.AnyType;import com.sun.btrace.BTraceUtils;import com.sun....翻译 2019-08-22 19:28:42 · 150 阅读 · 0 评论 -
Btrace的使用
Btrace简介Btrace可以动态地向目标应用程序的字节码注入追踪代码用到的技术:JavaComplierApi、JVMTI、Agent、Instrumentation+ASM(相对来说都是底层的技术)Btrace的gitbub地址github地址点击Release Page之后进入到一个页面然后下载对应的版本。linux下载btrace-bin-1.3.11.3.tgz,w...翻译 2019-08-22 16:55:22 · 215 阅读 · 1 评论 -
使用jvisualvm工具分析
在jdk安装目录下回找到jvisualvm工具,如下图这个非常类似于MAT。点击 文件->装入 可以打开*.hprof文件。类似于MAT进行分析。抽样器可以对内存和CPU进行抽样CPU可以查看每个方法执行的时间内存可以查看每个对象占用的内存。一个对象可能存在多个实例。...翻译 2019-08-22 14:35:44 · 832 阅读 · 0 评论 -
jstack实战死循环与死锁
jstack的用法把jstack打印的信息保存到txt中adog@E531:桌面$ jps -l15222 com.intellij.idea.Main17238 sun.tools.jps.Jps15547 com.imooc.monitor_tuning.MonitorTuningApplication15532 org.jetbrains.jps.cmdline.Launcher...翻译 2019-08-22 11:21:04 · 941 阅读 · 0 评论 -
导出内存映像文件并使用MAT工具定位内存溢出问题
问题分析当在生产环境中发生内存溢出时,需要找出内存溢出的问题所在。当处于生产环境中,需要对内存镜像文件进行分析,进而找出导致内存溢出的原因。那么如何来到处内存镜像文件呢。有两种方法,下面一一介绍。内存溢出自动导出-XX:+HeapDumpOnOutOfMemoryError-XX:HeapDumpPath=././表示当发生内存溢出的时候自动到处到当前路径使用jmap命令手动导出j...翻译 2019-08-21 21:45:53 · 412 阅读 · 0 评论 -
在eclips中安装MAT插件分析JVM内存镜像文件:*.hprof
点击eclipse菜单栏Help->MarketPlace在搜索框中输入MAT,并回车这里选择安装MemoryAnalyzer 1.6.1安装完成之后记得重启eclipse使用eclipse的MAT插件分析*.hprof文件依次点击eclipse的菜单栏:File->Open File,定位到hprof文件然后就可以进行分析了...原创 2019-08-21 20:37:01 · 272 阅读 · 0 评论 -
Jvm之堆内存溢出和非堆内存溢出
jVM标准参数-help-server -client-version -showversion-cp -classpathX参数非标准化参数-Xint:解释执行-Xcomp:第一次使用就编译成本地代码-Xmixed:混合模式,JVM自己来决定是否编译成本地代码XX参数非标准化参数相对不稳定主要用于JVM调优和DebugBoolean类型格式:-XX:[±]表示启用或...原创 2019-08-21 16:48:00 · 2275 阅读 · 0 评论 -
使用IDEA进行tomcat远程debug
把程序部署到远程的服务器上,也可以使用eclipse或者IDEA进行调试。tomcat远程debugtomcat-manager监控正在tomcat的低版本中,tomcat-manager监控默认是开启的,但是从tomcat5之后的高版本默认就不开启了。这里可以把监控打开,学习一下其中可以做那些监控。psi-probe监控psi-probe是一款更加强大的监控工具。tomcat远程...翻译 2019-08-23 09:28:34 · 1035 阅读 · 0 评论