Linux调试分析诊断工具strace 2019年3月25日 ⋅
Shocker 原文链接:https://shockerli.net/post/golang-tool-gops/ GitHub: https://github.com/google/gops 一个用于列出和诊断分析系统中正在运行的 Go 程序的命令行工具 安装 命令帮助 执行 gops help 查看帮助文档: 使用详解 为了能更好的分析程序,需要在我们的项目中加一行 agent 诊断分析代码,用于统计分析程序问题。 该命令会显示以下内容: PID PPID 程序名称 构建该程序的 Go 版本号 程序所在绝对路径 注意,列表中有个程序名称后面带了个 *,表示该程序加入了 gops 的诊断分析代码。 GOMAXPROCS 值等信息 gops pprof-cpu (<pid>|<addr>) 用法: gops pprof-cpu (<pid>|<addr>) 调用并展示 go tool pprof 工具中关于 gops pprof-heap (<pid>|<addr>) 用法: gops pprof-heap (<pid>|<addr>) 调用并展示 go tool pprof 工具中关于 heap 的性能分析数据
移动推送、BI、云数仓Doris、ES、数据湖DLC、WeData、流计算Oceanus,多款产品助您高效挖掘数据潜力,提升数据生产力!
今天的主角就登场了,阿里巴巴最近开源出来的一个针对 java 的工具,主要是针对 java 的问题进行诊断---Arthas(阿尔萨斯) ? 这就是使用Arthas诊断出的效率问题 [滑稽] 是不是特别爽,有了这个工具,妈妈再也不用担心我优化问题了,哪里慢改哪里! 一、概述 这个工具可以协助你做下面这些事情: 这个类是从哪个 jar 包加载而来的? 为什么会报各种类相关的 Exception? 此脚本暂时只接受一个参数 pid,即只能诊断本机上的 Java 进程。 monitor/watch/trace相关 请注意,这些命令,都通过字节码增强技术来实现的,会在指定类的方法中插入一些切面来实现数据统计和观测,因此在线上、预发使用时,请尽量明确需要观测的类、方法以及条件,诊断结束要执行
工具概述 Greys为一款“事后工具” ,即服务已经上线了,无法再通过打印日志等方式进行埋点分析,此时可以借助此工具,来跟踪代码执行耗时、堆栈运行情况等。 使用场景 (1)分析哪些方法慢,查询具体的故障点 (2)查看方法的参数、返回值 (3)查看对象属性等 # 程序安装 1、在线安装方式(推荐)
MTR 网络诊断工具 为什么会了解到MTR这个工具 今天线上业务出现了大量语音合成问题,本以为是服务出问题,但是经过排查发现服务一切正常就是合成的特别慢,在TTS语音合成服务那边也没有大量的任务堆积,这边也一直再发送需要合成的数据过去
alibaba.github.io/arthas/ ---- Arthas支持JDK 6+,支持Linux/Mac/Winodws,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断
其他移动端诊断工具可查看:https://cloud.tencent.com/developer/article/1489051 ---- 工具下载地址:http://imgcache.gtimg.cn /huatuo/apks/capture.apk 环境: android 常用来分析dns劫持,http 302劫持 获取客户端IP,ldns,域名请求ip,请求耗时,可靠性高,信息较全 image.png 操作说明 1.手机浏览器打开 huatuo.qq.com 点击诊断app,下载腾讯云诊断 或者直接用URL进行下载:http://imgcache.gtimg.cn/huatuo/apks/capture.apk image.png 2.下载诊断工具后,进行安装,然后打开“腾讯云诊断” image.png 输入详细的URL ,点击开始诊断,诊断过程大概需要三分钟的样子 image.png 3.诊断完成后,会生成个报告 ,可让用户将报告分享给您来进行分析 image.png image.png
Arthas支持JDK 6+,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。
perf是Linux下的一款性能分析工具,能够进行函数级与指令级的热点查找。 1. 通过分析可以看到在哪些地方占用了更多的cpu,我们看到有个pow_function, 可以回车进入看到具体的执行指令 ? 我们还可以 # 根据comms限定范围 perf top --comms nginx,php 可能并不是一个进程在提供服务,如果需要全部分析的话可以利用,分隔 perf top -p 23015,32476 最后根据查看消耗指令,综合分析, 排查系统瓶颈。
命令行工具 jps jps类似于linux中的ps命令,用于打印正在运行的java进程相关的信息。 jmap jmap用于分析JVM中堆中的对象,包括生成堆的dump文件,这个命令同样有多条子命令。 jmap -histo:live使用示例 3:jmap -dump :用于导出JVM的堆快照文件,方便用GUI工具分析。 ? 2: -m (mixed mode),不仅会输出Java堆栈信息,还会输出C/C++堆栈信息(比如Native方法) 如果线程数太多,可以借助分析操作系统特用的分析工具找出用时最长的线程,然后通过如下图的命令定位到具体的堆栈信息 便可以使用MAT工具分析堆内存了。
当获得 Java 进程的进程 ID 之后,我们便可以调用接下来介绍的各项监控及诊断工具了。 jstat jstat命令(帮助文档)可用来打印目标 Java 进程的性能数据。 jmap 在这种情况下,我们便可以请jmap命令(帮助文档)出马,分析 Java 虚拟机堆中的对象。 jmap同样包括多条子命令。 -clstats,该子命令将打印被加载类的信息。 这种格式的文件可以被其他 GUI 工具查看,具体我会在下一篇中进行演示。 这可能导致基于该堆快照的分析结果存在偏差。举个例子,假设在编译生成的机器码中,某些对象的生命周期在两个安全点之间,那么:live选项将无法探知到这些对象。 总结与实践 今天我介绍了 JDK 中用于监控及诊断的命令行工具。我们再来回顾一下。 jps将打印所有正在运行的 Java 进程。
图 1 PRONETA Basic 是一款基于 PC 的免费软件工具,提供了以下用于协助 PROFINET 工厂调试的功能: 拓扑概况,可自动扫描您的 PROFINET 网络并显示所有连接的设备。 此工具可以命名组件并执行其他基本组态任务,还可以将参考系统与实际的配置进行比较。 IO 测试,用于快速测试组件的接线和模块组态。 由于不需要除 PRONETA 以外的其他工程组态工具,也不需要专用的硬件,因此 PRONETA 可以在项目早期就便捷快速地完成对工厂组态的检查。
其他移动端诊断工具可查看:https://cloud.tencent.com/developer/article/1489051 ---- ios软件 下载地址:https://itunes.apple.com
本文还提供了生产力功能的资源,例如用于诊断性能问题、内存泄漏、高 CPU、死锁和代码分析工具支持的 .NET CLI 工具。 附加工具 除了比较常用的工具,.NET 还提供了针对特定场景的工具。 有关详细信息,请参阅.NET 附加工具概述。 诊断和仪表 作为 .NET 开发人员,您可以使用常见的性能诊断工具来监控应用性能、使用跟踪分析应用、收集性能指标以及分析转储文件。 您使用事件计数器收集性能指标,并使用分析工具深入了解应用程序的性能。有关详细信息,请参阅.NET 诊断工具。 代码分析 .NET 编译器平台 (Roslyn) 分析器检查您的 C# 或 Visual Basic 代码是否存在代码质量和代码样式问题。有关详细信息,请参阅.NET 源代码分析概述。
场景与优缺点对比:工具/方法OS使用场景优点缺点华佗ping诊断android/ios/pc获取客户端IP,ldns,域名请求ip,请求耗时无需客户端,直接浏览器请求有时会获取不到ip,dns信息,或不准确腾讯云诊断 APPandroid分析dns劫持,http 302劫持。 获取客户端IP,ldns,域名请求ip,请求耗时,可靠性高,信息较全无需root需要安装appiNetToolsios获取dns解析,延迟,分析dns劫持可准确获取ping数据和域名解析信息无法对url 进行诊断,需要安装app笔记本共享热点,通过fiddler抓包android/ios/pcpc共享热点,通过fiddler来进行抓包,分析业务的http请求fiddler可抓https包自己模拟可以,让用户来用比较困难手机 ,可抓https请求可直接移动端抓包,无需root部分app无法进行抓包使用说明与工具地址:工具/方法使用说明(可直接将说明给异常用户按步骤操作)工具地址华佗ping诊断https://cloud.tencent.com
背景: k8s 集群中,Java应用容器中添加即时工具分析诊断arthas、netstat 1.预先下载好arthas-packaging-3.1.1-bin.zip文件,在Dockerfile同目录下 arthas-packaging/3.1.1/arthas-packaging-3.1.1-bin.zip mv arthas-packaging-3.1.1-bin.zip arthas.zip 2.netstat工具在 ospd-netstat,在Dockerfile直接apk add 添加即可 3.以下为Dokcerfile文件(注:需要openjdk,如果是jre的,会缺少dt.jar,tools.jar arthas工具会使用到 ;需要安装tini工具,因为默认java 应用跑在容器中会是1 pid号,arthas会无法调用) FROM openjdk:8-jdk-alpine COPY repositories /etc/apk /library/javabase:v8.0.22 . docker push 192.168.3.10:5001/library/javabase:v8.0.22 5.问题总结: 如果未安装tini工具
其他移动端诊断工具可查看:https://cloud.tencent.com/developer/article/1489051 ---- 华佗诊断地址:https://ping.huatuo.qq.com / 适用于移动端,PC端 获取客户端IP,ldns,域名请求ip,请求耗时 直接访问 可能获取到客户端IP,local DNS,手机环境,还有请求其他域名的延迟 image.png 输入域名进行诊断 会多了请求域名 DNS解析到的IP,请求返回的状态码,延时等 image.png 诊断结果分享 如果想要将结果给到其他人,例如反馈给腾讯云,可复制结果进行分享 image.png
针对以上问题,可以使用 ApDiag 诊断工具进行分析和诊断,ApDiag 工具主要可以提供以下功能: 1. 监控当前请求队列中待处理的动作数。 2. 判断脚本是否发生阻塞。 3. 启动将重要脚本诊断值保存在变量中的功能。 6. 设置诊断信息输出到窗口、文件或被删除。 …… 诊断工具Apdiag.exe 位于安装目录的“... CourseID=859 2 ApDiag 诊断工具提供的主要功能和使用方法介绍 以下介绍了6个主要的功能和相应的使用方法。注意,要及时关闭不用的诊断功能,以避免在运行系统运行期间降低系统性能。 3使用ApDiag诊断工具帮助快速定位阻塞脚本的实例 下面以一个简单的测试项目为例,介绍如何使用上述方法进行脚本的诊断,并快速定位到发生阻塞的脚本的函数名称。 如果客户在项目运行过程中,发现类似上述脚本阻塞的现象,可以使用ApDiag工具,分步诊断上述问题,从而快速定位到阻塞脚本的函数名称。
什么是 Arthas 摘录一段官方 Github 上的简介 Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱。 Arthas 支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。 ASM提供了一些常见的字节码转换和分析算法,可以从它们构建定制的复杂转换和代码分析工具。ASM提供了与其他Java字节码框架类似的功能,但是主要关注性能。 ,红色部分本篇文章将不涉及,会在后续文章中单独分析 ? ASM 提供了一些常见的字节码转换和分析算法,可以从中构建自定义复杂转换和代码分析工具。 ASM 提供与其他Java字节码框架类似的功能,但专注于性能。
其他移动端诊断工具可查看:https://cloud.tencent.com/developer/article/1489051----软件下载适用环境 IOS下载地址:https://apps.apple.com
腾讯 Kona(TK)是免费、可立即投入生产的 OpenJDK 发行版。腾讯 Kona 基于 TencentJDK 开发,针对云应用场景定制新的功能及优化, 具备更快的云应用启动速度,更好的性能以及更为便捷的分析、诊断工具……
扫码关注腾讯云开发者
领取腾讯云代金券