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

网站数据库清空深圳微信公众平台开发网站开发

网站数据库清空,深圳微信公众平台开发网站开发,河北seo推广系统,岳阳做公司网站嘿#xff0c;你是不是对Java开发中的调试和诊断问题感到头疼#xff1f; 别担心#xff0c;我要告诉你一个秘密武器#xff01;它就像是一位超级英雄#xff0c;能够释放你的潜力#xff0c;解决你的烦恼#xff01;它的名字叫做Arthas#xff0c;是一款Java诊断利器…嘿你是不是对Java开发中的调试和诊断问题感到头疼 别担心我要告诉你一个秘密武器它就像是一位超级英雄能够释放你的潜力解决你的烦恼它的名字叫做Arthas是一款Java诊断利器简直就是开发者的救星 它不仅能够帮助你实时监控和分析Java应用程序的运行状态还能让你在生产环境中进行线上调试简直就是神一般的存在不管是查看方法调用堆栈、监控线程状态还是动态修改代码Arthas都能轻松应对 1. 介绍 阿里巴巴 Arthas 是一个诊断工具可以用于监视、分析和解决 Java 应用程序的问题。使用 Arthas 的一个主要优点是我们不需要修改代码甚至不需要重新启动我们想要监视的 Java 服务。 在本教程中我们将首先安装 Arthas在此之后通过一个简单的案例来演示 Arthas 的一些关键特性。 最后由于 Arthas 是用 Java 编写的因此它是跨平台的可以在 Linux、macOS 和 Windows 上运行。 2. 下载和入门 首先我们可以通过直接下载链接或使用curl来下载 Arthas 库 curl -O https://alibaba.github.io/arthas/arthas-boot.jar现在让我们通过运行带有-h帮助选项的 Arthas 来测试它是否工作 java -jar arthas-boot.jar -h如果成功我们应该看到显示所有命令的帮助指南 3. 案例分析 在本教程中我们将使用一个非常简单的应用程序基于利用递归实现的斐波那契数列的相对低效的实现方式 public class FibonacciGenerator {public static void main(String[] args) {System.out.println(按任意键继续);System.in.read();for (int i  0; i  100; i) {long result  fibonacci(i);System.out.println(format(fib(%d): %d, i, result));}}public static long fibonacci(int n) {if (n  0 || n  1) {return 1L;} else {return fibonacci(n - 1)  fibonacci(n - 2);}} }这个示例的最有趣的部分是遵循斐波那契数列的数学定义的 fibonacci 方法。 在 main 方法中我们使用一个循环和相对较大的数字以便让计算机进行较长时间的计算。这当然正是我们想要的以便演示 Arthas。 4. 启动 Arthas 现在让我们试试 Arthas我们需要做的第一件事是运行我们的小型斐波那契应用程序。我们可以使用我们喜欢的 IDE 或直接在终端中运行它。它会要求按下一个键才能启动。我们将在将进程附加到 Arthas 之后按下任意键。 现在让我们运行 Arthas 可执行文件 java -jar arthas-boot.jarArthas 提示选择要附加到的进程 [INFO] arthas-boot version: 3.1.7 [INFO] Found existing java process, please choose one and hit RETURN. * [1]: 25500 com.baeldung.arthas.FibonacciGenerator ...让我们选择名称为 com.baeldung.arthas.FibonacciGenerator 的进程。在此示例中只需在列表中输入数字‘1’并按 Enter 即可。 Arthas 现在会附加到该进程并启动 [INFO] Try to attach process 25500 [INFO] Attach process 25500 success. ...                     一旦 Arthas 启动我们就有一个提示符可以发出不同的命令。 我们可以使用 help 命令获取有关可用选项的更多信息。为了方便使用 Arthas我们还可以使用 tab 键来自动完成其命令。 在将 Arthas 附加到进程后我们现在可以按下一个键程序将开始打印斐波那契数。 5. 仪表盘 一旦 Arthas 启动我们可以使用仪表盘。在这种情况下我们通过输入 dashboard 命令来使用仪表盘。现在我们可以看到一个详细的屏幕其中包含多个面板和关于我们的 Java 进程的许多信息 让我们更详细地看一下其中的一些内容 顶部区域专门显示当前正在运行的线程 一个重要的列是每个线程的 CPU 使用情况 第三部分显示每个线程的 CPU 时间 另一个有趣的面板是内存分析。不同的内存区域以及它们的统计信息都列在其中。在右侧我们有垃圾收集器的信息 最后在第五部分我们有关于主机平台和 JVM 的信息 我们可以通过按下 q 键退出仪表盘。 我们应该记住即使退出Arthas 仍会附加到我们的进程上。因此为了正确地从我们的进程中断开它的连接我们需要运行 stop 命令。 6. 分析堆栈跟踪 在仪表盘中我们看到我们的主进程占用了几乎 100% 的 CPU。该进程的 ID 是 1在第一列中可以看到。 现在我们已经退出了仪表盘我们可以通过运行 thread 命令来更详细地分析该进程 thread 1作为参数传递的数字是线程 ID。Arthas 打印出一个堆栈跟踪信息其中充斥着对 fibonacci 方法的调用。 如果堆栈跟踪信息很长而且难以阅读可以使用 thread 命令结合 grep 命令来过滤 thread 1 | grep main(这将只打印与 grep 命令匹配的行 [arthas25500]$ thread 1 | grep main(at com.baeldung.arthas.FibonacciGenerator.main(FibonacciGenerator.java:10)7. 反编译Java类 假设我们正在分析一个我们对其中了解甚少或一无所知的Java应用程序突然发现堆栈中充斥着以下类型的重复调用 [arthas59816]$ thread 1 main Id1 RUNNABLEat app//com.baeldung.arthas.FibonacciGenerator.fibonacci(FibonacciGenerator.java:18)at app//com.baeldung.arthas.FibonacciGenerator.fibonacci(FibonacciGenerator.java:18)...由于我们运行了Arthas我们可以反编译一个类来查看其内容。为了实现这一点我们可以使用jad命令将限定类名作为参数传递 jad com.baeldung.arthas.FibonacciGenerator类加载器 -jdk.internal.loader.ClassLoaders $ AppClassLoader  799f7e29-jdk.internal.loader.ClassLoaders $ PlatformClassLoader  60f1dd34位置 /home/amoreno/work/baeldung/tutorials/libraries-3/target//** 反编译使用CFR。*/ package com.baeldung.arthas;import java.io.IOException; import java.io.InputStream; importjava.io.PrintStream;public class FibonacciGenerator {public static void main(String[] arrstring) throws IOException {输出是反编译的Java类和一些有用的元数据如类的位置。这是一个非常有用和强大的功能。 8. 搜索类和搜索方法 搜索类命令在搜索JVM中加载的类时非常方便。我们可以使用它通过输入sc并将模式作为参数传递来使用带或不带通配符 [arthas70099]$ sc *Fibonacci* com.baeldung.arthas.FibonacciGenerator Affect(row-cnt:1) cost in 5 ms.一旦我们获得了类的限定名称我们可以使用两个附加标志来查找更多信息 -d显示类的详细信息 -f显示类的字段 然而类的字段必须与详细信息一起查询 [arthas70099]$ sc -df com.baeldung.arthas.FibonacciGeneratorclass-info        com.baeldung.arthas.FibonacciGenerator...同样我们可以使用sm搜索方法命令来查找类中加载的方法。在这种情况下对于我们的类com.baeldung.arthas.FibonacciGenerator我们可以运行 [arthas70099]$ sm com.baeldung.arthas.FibonacciGenerator com.baeldung.arthas.FibonacciGenerator init()V com.baeldung.arthas.FibonacciGenerator main([Ljava/lang/String;)V com.baeldung.arthas.FibonacciGenerator fibonacci(I)J Affect(row-cnt:3) cost in 4 ms.我们可以使用-d标志来检索方法的详细信息。最后我们可以传递方法的名称作为可选参数以缩小返回方法的数量 sm -d com.baeldung.arthas.FibonacciGenerator fibonaccideclaring-class  com.baeldung.arthas.FibonacciGeneratormethod-name      fibonaccimodifier         public,staticannotationparameters       intreturn           longexceptionsclassLoaderHash  799f7e299. 监视方法调用 我们可以使用Arthas来监视方法这在调试应用程序的性能问题时非常方便。为此我们可以使用monitor命令。 monitor命令需要一个-c 秒数标志和两个参数 - 限定类名和方法名。 对于我们的案例研究让我们来调用monitor monitor -c 10 com.baeldung.arthas.FibonacciGenerator fibonacci正如我们所预期的Arthas将每10秒打印有关fibonacci方法的指标 Affect(class-cnt:1 , method-cnt:1) cost in 47 ms.timestamp            class                                          method     total   success  fail  avg-rt(ms)  fail-rate                                                                        -----------------------------------------------------------------------------------------------------------------------------                                                                      2020-03-07 11:43:26  com.baeldung.arthas.FibonacciGenerator  fibonacci  528957  528957   0     0.07        0.00% ...                                                                            对于那些最终失败的调用我们也有指标 - 这对于调试很有用。 10. 监控方法参数 如果我们需要调试方法的参数我们可以使用watch命令。但是语法会稍微复杂一些 watch com.baeldung.arthas.FibonacciGenerator fibonacci {params[0], returnObj} params[0]10 -n 10让我们详细看一下各个参数 第一个参数是类名 第二个参数是方法名 第三个参数是定义我们要查看的内容的OGNL表达式 - 在这种情况下它是第一个也是唯一的方法参数和返回值 第四个和最后一个可选参数是用于过滤我们要监视的调用的布尔表达式 对于此示例我们只想在参数大于10时监视。最后我们添加一个标志来限制结果为10个 watch com.baeldung.arthas.FibonacciGenerator fibonacci {params[0], returnObj} params[0]10 -n 10 按Q或CtrlC中断。 Affect(class-cnt:1 , method-cnt:1) cost in 19 ms. ts2020-02-17 21:48:08; [cost30.165211ms] resultArrayList[Integer[11],Long[144], ] ts2020-02-17 21:48:08; [cost50.405506ms] resultArrayList[Integer[12],Long[233], ] ...在这里我们可以看到带有CPU时间和输入/返回值的调用示例。 11. 分析器 对于那些对应用程序性能感兴趣的人来说通过分析器命令提供了一种非常直观的能力。分析器将评估我们的进程正在使用的CPU的性能。 让我们通过运行profiler start来启动分析器。这是一个非阻塞的任务意味着在分析器工作时我们可以继续使用Arthas。 随时可以通过运行profiler getSamples来询问分析器有多少个样本。 现在让我们使用profiler stop来停止分析器。此时一个FlameGraph图像将被保存。在这个具体的案例中我们有一个以斐波那契线程为主导的图表 注意当我们想要检测我们的CPU时间花在哪里时这个图表特别有用。 12. 总结 在本教程中我们探索了Arthas的一些最强大和有用的功能。 正如我们所见Arthas有许多命令可以帮助我们诊断各种问题。当我们无法访问正在审查的应用程序的代码或者我们想快速诊断在服务器上运行的有问题的应用程序时它也可以特别有帮助。 参考资料 官方文档https://arthas.aliyun.com/doc/ Arthas的GitHub仓库地址https://github.com/alibaba/arthas
http://www.yutouwan.com/news/344455/

相关文章:

  • 做问卷比较好的网站删除wordpress首页链接
  • 国外免费网站域名服务器查询简述获得友情链接的途径
  • 网站策划书模板大全制作网页需要的技术
  • 网站开发 项目内容意大利新闻
  • 黄骅做网站的电话建设银行境外购物网站
  • 徐州市政建设集团公司网站wordpress页面是什么
  • 网站开发的论文引言wordpress js加载速度慢
  • 江苏大汉建设实业集团网站百度搜到自己的网站
  • 做网站的类型wordpress 登录可见
  • 网站建站安全需求介绍兰州的网页
  • 免费综合网站注册申请wordpress 文章描述
  • 做网站哪种编程语言好南浔区城乡建设局网站
  • 女的有没有做网站的制作图片用什么软件好
  • 开封市建设局网站政务门户网站建设思想
  • 爱站seo工具包下载天蝎网站建设公司
  • 简单的j网站建设方案书网页升级访问狼在线观看
  • wordpress网站推翻重建适合穷人开的小店
  • 中国建设银行客户端下载官方网站优化公司组织架构
  • 网站 系统概述thinkphp制作网站开发
  • 宿州哪家做网站不做洛阳公司青峰做的企业网站
  • 商品网站建设实验报告软文广告平台
  • 在国内可以做国外的网站吗珠海工商网上登记平台
  • 做播放器电影网站需要多少钱什么是网络营销与直播电商
  • 图书馆建设网站注意点做电子相册的网站
  • 全屏网站 功能天津网站建设渠道
  • 百度搜索网站显示图片做网站有哪些公司好
  • asp网站建设 文献网站开发年度总结工作
  • 360搜索怎么做网站优化WordPress附件空间
  • 学院网站建设的需求分析淮阳城乡建设局网站
  • intitle 律师网站建设的重要性中国十大网络科技公司排名