当前位置: 首页 > news >正文

上海单位建设报建网站上海企业网站模板建站

上海单位建设报建网站,上海企业网站模板建站,禅城区建设局网站,长春网站建设SEO优化营销文章目录 1 简介2背景3 图形界面工具 arthas 阿里开源3.1 #xff1a;启动 arthas3.2 help :查看arthas所有命令3.3 查看 dashboard3.4 thread 列出当前进程所有线程占用CPU和内存情况3.5 jvm 查看该进程的各项参数 #xff08;类比 jinfo#xff09;3.6 通过 jad 来反编译 … 文章目录 1 简介2背景3 图形界面工具 arthas 阿里开源3.1 启动 arthas3.2 help :查看arthas所有命令3.3 查看 dashboard3.4 thread 列出当前进程所有线程占用CPU和内存情况3.5 jvm 查看该进程的各项参数 类比 jinfo3.6 通过 jad 来反编译 UserController Class3.8 monitor 监控方法的执行情况3.9 watch检测函数返回值3.10 trace根据路径追踪并记录消耗时间3.11 tt时间隧道记录多个请求3.12 redefine 定义class3.13 退出 arthas 4 项目中应用 1 简介 Arthas 是一款线上监控诊断产品通过全局视角实时查看应用 load、内存、gc、线程的状态信息并能在不修改应用代码的情况下对业务问题进行诊断包括查看方法调用的出入参、异常监测方法执行耗时类加载信息等大大提升线上问题排查效率。 2背景 通常本地开发环境无法访问生产环境。如果在生产环境中遇到问题则无法使用 IDE 远程调试。更糟糕的是在生产环境中调试是不可接受的因为它会暂停所有线程导致服务暂停。 开发人员可以尝试在测试环境或者预发环境中复现生产环境中的问题。但是某些问题无法在不同的环境中轻松复现甚至在重新启动后就消失了。 如果您正在考虑在代码中添加一些日志以帮助解决问题您将必须经历以下阶段测试、预发然后生产。这种方法效率低下更糟糕的是该问题可能无法解决因为一旦 JVM 重新启动它可能无法复现如上文所述。 Arthas 旨在解决这些问题。开发人员可以在线解决生产问题。无需 JVM 重启无需代码更改。 Arthas 作为观察者永远不会暂停正在运行的线程。 3 图形界面工具 arthas 阿里开源 下载地址https://arthas.aliyun.com/ 简介Arthas 是一款线上监控诊断产品通过全局视角实时查看应用 load、内存、gc、线程的状态信息并能在不修改应用代码的情况下对业务问题进行诊断包括查看方法调用的出入参、异常监测方法执行耗时类加载信息等大大提升线上问题排查效率。 3.1 启动 arthas 直接通过java -jar 启动arthas的jar包文件 选择应用 java 进程jvm-test 进程是第 1 个则输入 1再输入回车/enter。Arthas 会 attach 到目标进程上并输出日志 3.2 help :查看arthas所有命令 JVM 相关 dashboard - 当前系统的实时数据面板getstatic - 查看类的静态属性heapdump - dump java heap, 类似 jmap 命令的 heap dump 功能jvm - 查看当前 JVM 的信息logger - 查看和修改 loggermbean - 查看 Mbean 的信息memory - 查看 JVM 的内存信息ognl - 执行 ognl 表达式perfcounter - 查看当前 JVM 的 Perf Counter 信息sysenv - 查看 JVM 的环境变量sysprop - 查看和修改 JVM 的系统属性thread - 查看当前 JVM 的线程堆栈信息vmoption - 查看和修改 JVM 里诊断相关的 optionvmtool - 从 jvm 里查询对象执行 forceGc class/classloader 相关 classloader - 查看 classloader 的继承树urls类加载信息使用 classloader 去 getResourcedump - dump 已加载类的 byte code 到特定目录jad - 反编译指定已加载类的源码mc - 内存编译器内存编译.java文件为.class文件redefine - 加载外部的.class文件redefine 到 JVM 里retransform - 加载外部的.class文件retransform 到 JVM 里sc - 查看 JVM 已加载的类信息sm - 查看已加载类的方法信息 monitor/watch/trace 相关 monitor - 方法执行监控stack - 输出当前方法被调用的调用路径trace - 方法内部调用路径并输出方法路径上的每个节点上耗时tt - 方法执行数据的时空隧道记录下指定方法每次调用的入参和返回信息并能对这些不同的时间下调用进行观测watch - 方法执行数据观测 基础命令 base64 - base64 编码转换和 linux 里的 base64 命令类似cat - 打印文件内容和 linux 里的 cat 命令类似cls - 清空当前屏幕区域echo - 打印参数和 linux 里的 echo 命令类似grep - 匹配查找和 linux 里的 grep 命令类似help - 查看命令帮助信息history - 打印命令历史keymap - Arthas 快捷键列表及自定义快捷键pwd - 返回当前的工作目录和 linux 命令类似quit - 退出当前 Arthas 客户端其他 Arthas 客户端不受影响reset - 重置增强类将被 Arthas 增强过的类全部还原Arthas 服务端关闭时会重置所有增强过的类session - 查看当前会话的信息stop - 关闭 Arthas 服务端所有 Arthas 客户端全部退出tee - 复制标准输入到标准输出和指定的文件和 linux 里的 tee 命令类似version - 输出当前目标 Java 进程所加载的 Arthas 版本号 3.3 查看 dashboard 输入 dashboard按回车/enter会展示当前进程的信息按ctrlc可以中断执行。 可以看到进程里面有哪些线程每个线程的状态、吃CPU的情况等。 在Memory中我们可以看到内存的占用情况 新生代eden_space、survivor_space老年代tenured_space非堆内存nonheap 3.4 thread 列出当前进程所有线程占用CPU和内存情况 thread pid会打印线程 ID pid 的栈通常pid 1是 main 函数的线程。 thread -b 寻找死锁 3.5 jvm 查看该进程的各项参数 类比 jinfo 我们在garbage collectorsGC里面可以看到这里垃圾回收的统计情况 Copy复制算法用了49次耗时506MarkSweepCompact标记整理算法用了3次耗时795 3.6 通过 jad 来反编译 UserController Class 3.8 monitor 监控方法的执行情况 监控com.example.jvm.controller.TestController类的 “getStr”方法 并且每5S更新一次状态。 monitor com.example.jvm.controller.TestController getStr -c 5监控的维度说明 监控项说明timestamp时间戳classJava类method方法构造方法、普通方法total调用次数success成功次数fail失败次数rt平均耗时fail-rate失败率 3.9 watch检测函数返回值 方法执行数据观测让你能方便的观察到指定方法的调用情况。 能观察到的范围为返回值、抛出异常、入参通过编写OGNL 表达式进行对应变量的查看。 参数名称参数说明class-pattern类名表达式匹配method-pattern方法名表达式匹配express观察表达式condition-express条件表达式[b]在方法调用之前观察before[e]在方法异常之后观察 exception[s]在方法返回之后观察 success[f]在方法结束之后(正常返回和异常返回)观察 finish[E]开启正则表达式匹配默认为通配符匹配[x:]指定输出结果的属性遍历深度默认为 1 这里重点要说明的是观察表达式观察表达式的构成主要由ognl 表达式组成所以你可以这样写{params,returnObj}只要是一个合法的 ognl 表达式都能被正常支持。 特别说明 watch 命令定义了4个观察事件点即 -b 方法调用前-e 方法异常后-s 方法返回后-f 方法结束后4个观察事件点 -b、-e、-s 默认关闭-f 默认打开当指定观察点被打开后在相应事件点会对观察表达式进行求值并输出这里要注意方法入参和方法出参的区别有可能在中间被修改导致前后不一致除了 -b 事件点 params 代表方法入参外其余事件都代表方法出参当使用 -b 时由于观察事件点是在方法调用前此时返回值或异常均不存在 通过watch命令可以查看函数的参数/返回值/异常信息。 查看方法执行的返回值 watch com.example.jvm.controller.UserController list returnObj3.10 trace根据路径追踪并记录消耗时间 对方法内部调用路径进行追踪并输出方法路径上的每个节点上耗时。 简介 trace 命令能主动搜索 class-patternmethod-pattern 对应的方法调用路径渲染和统计整个调用链路上的所有性能开销和追踪调用链路。 观察表达式的构成主要由ognl 表达式组成所以你可以这样写{params,returnObj}只要是一个合法的 ognl 表达式都能被正常支持。 很多时候我们只想看到某个方法的rt大于某个时间之后的trace结果现在Arthas可以按照方法执行的耗时来进行过滤了例如trace *StringUtils isBlank #cost100’表示当执行时间超过100ms的时候才会输出trace的结果。 watch/stack/trace这个三个命令都支持#cost耗时条件过滤。 参数说明 参数名称参数说明class-pattern类名表达匹配method-pattern方法名表达式匹配condition-express条件表达式使用OGNL表达式[E]开启正则表达式匹配默认是通配符匹配[n:]设置命令执行次数#cost方法执行耗时单位是毫秒 案例 # trace函数指定类的指定方法 trace com.example.jvm.controller.UserController list# 在浏览器上进行登录操作检查最耗时的方法 trace *.DispatcherServlet *3.11 tt时间隧道记录多个请求 time-tunnel 时间隧道。 记录下指定方法每次调用的入参和返回信息并能对这些不同时间下调用的信息进行观测 参数解析 tt的参数说明-t记录某个方法在一个时间段中的调用-l显示所有已经记录的列表-n 次数只记录多少次-s 表达式搜索表达式-i 索引号查看指定索引号的详细调用信息-p重新调用指定的索引号时间碎片 案例 # 最基本的使用来说就是记录下当前方法的每次调用环境现场。 tt -t com.example.jvm.controller.UserController list模拟报错 Operation(summary 业务接口模拟测试)Parameters({Parameter(name str,description 字符串参数,in ParameterIn.QUERY),})GetMapping(work)public ResponseEntityString work(RequestParam(str) String str){if (str.equals(1)){throw new RuntimeException(异常);}testService.work1();testService.work2();testService.work3();return ResponseEntity.ok().body(success);}public void work1() {try {Thread.sleep(1000);}catch (InterruptedException e){e.printStackTrace();}log.info(work1);}public void work2() {try {Thread.sleep(2000);}catch (InterruptedException e){e.printStackTrace();}log.info(work2);}public void work3() {try {Thread.sleep(3000);}catch (InterruptedException e){e.printStackTrace();}log.info(work3);}# 对现有记录进行检索 tt -l# 需要筛选出 primeFactors 方法的调用信息 tt -s method.namegetStr# 查看某条记录详细信息 tt -i 10073.12 redefine 定义class 可以在不停止项目的情况下修改java文件通过javac 类名.java编译 再通过redefine 定义class上传到远程 我在Linux上放了一个小程序输出zyw. # 编辑T.java文件 vim T.java # 编译T.java生成T.class文件 javac T.java # 启动arthas 绑定TestMain进程 java -jar arthas-boot.jar # 重新定义T.class 文件 redefine T.class 3.13 退出 arthas 如果只是退出当前的连接可以用quit或者exit命令。Attach 到目标进程上的 arthas 还会继续运行端口会保持开放下次连接时可以直接连接上。 如果想完全退出 arthas可以执行stop命令。 4 项目中应用
http://www.pierceye.com/news/820263/

相关文章:

  • 贵阳网站建设在线学做凉菜冷菜的网站
  • 购销网站建设视频百度云广东省深圳市龙华区
  • 做建材外贸哪个网站比较好乐清比较好的设计公司
  • 做电影种子下载网站违法吗桂林网站建设凡森网络
  • 云南省建设厅专家注册网站织梦网站怎么做下载地址
  • 你们需要网站建设搜索引擎调词平台多少钱
  • 北京建设官方网站百度公司官网首页
  • 四川禾力建设工程质量检测有限公司网站惠州有哪些做网站的公司
  • 深圳手机网站设计公司php网站安装图解
  • 网站开发 工作职责平面设计和室内设计有什么区别
  • 防城港门面做网站的代做网站跳转
  • 珠海网站系统建设苏州房地产网站建设
  • 长治网站建设培训文件检察院网站建设
  • 茶文化网站制作asa8.4 做网站映射
  • 网站建设步骤 文档富阳做网站洛洛科技
  • 列举网站建设的SEO策略广东建设行业招聘 什么网站
  • 免费社区建站系统seo是指什么
  • 网站建设实训的认识小企业网站建设哪里做得好
  • 无锡seo网站排名优化牟平建设企业网站
  • 网络营销好找工作吗成都seo优化公司排名
  • 网站换关键词山西网站备案
  • 网站微信建设运维经验深圳罗湖企业网站
  • 国外设计类网站泰安网网站建设
  • 做暖暖小视频网站手机 dns 国外网站
  • 子网站建设工作网站 首页布局 seo
  • 网站域名是什么传奇辅助网站怎么做
  • 在那个上面做网站都能搜到新乡网站建设设计
  • 网站编辑 seo是什么 百度知道本地网站搭建流程
  • 用凡科做网站好吗搜索自媒体平台
  • 学设计的网站有哪些内容免费设计图片软件