Arthas

docker 运行并使用 arthas 的方式

China☆狼群 提交于 2020-03-13 19:52:28
docker 运行并使用 arthas 的方式 docker run --init FROM openjdk:8-jdk-alpine # copy arthas COPY --from=hengyunabc/arthas:latest /opt/arthas /opt/arthas ENV LOG_PATH=/opt/logs \ LOG_HOME=/opt/logs/backup RUN mkdir -p /opt/logs/backup && \ mkdir -p /opt/apps ADD target/*.jar /opt/apps/ EXPOSE 8080 ENTRYPOINT ["java", "-XX:+UseG1GC", "-jar", "/opt/apps/spring-boot-demo.jar"] 安装 tini FROM openjdk:8-jdk-alpine # copy arthas COPY --from=hengyunabc/arthas:latest /opt/arthas /opt/arthas ENV LOG_PATH=/opt/logs \ LOG_HOME=/opt/logs/backup RUN mkdir -p /opt/logs/backup && \ mkdir -p /opt/apps && \ apk add --no

20 万人使用、累计节省 21.7 万小时,Cloud Toolkit 究竟是个怎样的 IDE 插件?

别等时光非礼了梦想. 提交于 2020-03-05 14:58:17
在文章的开始,先介绍一下 Cloud Toolkit 是什么? Cloud Toolkit 是阿里云发布的免费本地 IDE 插件,帮助开发者更高效地开发、测试、诊断并部署应用。通过插件,可以将本地应用一键部署到任意服务器,甚至云端(ECS、EDAS、ACK、ACR 和 小程序云等);并且还内置了 Arthas 诊断、Dubbo 工具、Terminal 终端、文件上传、函数计算 和 MySQL 执行器等工具。不仅仅有 IntelliJ IDEA 主流版本,还有 Eclipse、Pycharm、Maven 等其他版本。今年 2 月,Cloud Toolkit 刚刚发布了 Visual Studio Code 版本,全面覆盖前端开发者,帮助前端实现一键打包部署,让开发提速 8 倍。 点击了解产品详情 Cloud Toolkit 与开发者共同成长的这一年 2018 年 12 月,免费的本地 IDE 插件 Cloud Toolkit 正式对外发布。截止目前,已有超过 18 万人次下载了 Cloud Toolkit,并体验到了一键部署带来的开发便利;已实现本地代码部署到远程服务器 113 万次,为亚太地区开发者累计节省 21.7 万+ 小时。<br /> 接下来,我们盘点 Cloud Toolkit 的成长点滴,回顾 Cloud toolkit 与开发者创造的共同记忆。 迭代版本 57 个 从

JVM CPU Profiler技术原理及源码深度解析

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-28 07:34:44
研发人员在遇到线上报警或需要优化系统性能时,常常需要分析程序运行行为和性能瓶颈。Profiling技术是一种在应用运行时收集程序相关信息的动态分析手段,常用的JVM Profiler可以从多个方面对程序进行动态分析,如CPU、Memory、Thread、Classes、GC等,其中CPU Profiling的应用最为广泛。CPU Profiling经常被用于分析代码的执行热点,如“哪个方法占用CPU的执行时间最长”、“每个方法占用CPU的比例是多少”等等,通过CPU Profiling得到上述相关信息后,研发人员就可以轻松针对热点瓶颈进行分析和性能优化,进而突破性能瓶颈,大幅提升系统的吞吐量。 本文介绍了JVM平台上CPU Profiler的实现原理,希望能帮助读者在使用类似工具的同时也能清楚其内部的技术实现。 CPU Profiler简介 社区实现的JVM Profiler很多,比如已经商用且功能强大的 JProfiler ,也有免费开源的产品,如 JVM-Profiler ,功能各有所长。我们日常使用的Intellij IDEA最新版内部也集成了一个简单好用的Profiler,详细的介绍参见 官方Blog 。 在用IDEA打开需要诊断的Java项目后,在“Preferences -> Build, Execution, Deployment -> Java Profiler

如何优雅的学习JVM,实战篇(四)

Deadly 提交于 2020-02-28 04:55:33
# 一、JVM参数 ## 1.1 标准参数 -version -help -server -cp ## 1.2 -X参数 非标准参数,也就是在JDK各个版本中可能会变动 -Xint 解释执行 -Xcomp 第一次使用就编译成本地代码 -Xmixed 混合模式,JVM自己来决定 ## 1.3 -XX参数 使用得最多的参数类型,非标准化参数,相对不稳定,主要用于JVM调优和Debug a.Boolean类型 格式:-XX:\[+-\]<name> +或-表示启用或者禁用name属性 比如:-XX:+UseConcMarkSweepGC 表示启用CMS类型的垃圾回收器 -XX:+UseG1GC 表示启用G1类型的垃圾回收器 b.非Boolean类型 格式:-XX<name>=<value> 表示name属性的值是value 比如:-XX:MaxGCPauseMillis=500 ## 1.4 其它参数 -Xms1000等价于 -XX:InitialHeapSize=1000 -Xmx1000等价于 -XX:MaxHeapSize=1000 -Xss1000等价于 -XX:ThreadStackSize=1000 这一块内容也相当于-XX类型的参数 ## 1.5 查看参数 java -XX:+PrintFlagsFinal -version > flags.txt 上图值得注意的是“=

包管理原则

寵の児 提交于 2020-02-27 08:37:11
摘要 坊间传闻java web开发人员写了那么多代码,但是其实一半代码都在处理NPE。总是在加班,却大部分时间都在处理包冲突,类加载不了的bug。这些问题总是让新老程序员都很抓狂,有很多的工具可以辅助我们解决这些问题(maven helper插件,arthas等)但是有没有一些原则可以遵循,在源头上避免这些问题的发生呢。 问题 经常遇到的问题有 ClassNotFoundException 通过 Class.forName() 或者 loadClass() 方法加载类时,当classpath中又找不到这个类,就会抛这个错误。 这个错误一般比较好排查,编译程序时就抛出来了。然后引入对应的jar包,或者刷新classpath就可以解决 NoClassDefFoundError 类在编译的时候存在,但是运行的时候不存在。 NoSuchMethodError 找不到对应的方法,运行时才会抛错,这个错误在日常开发经常遇到,线上诸多bug都是来源于此。 发生的原因就是多个包依赖了不一样版本的另外一个包,比如A,B都依赖了C包,A依赖C1,B依赖C2,工程中加载了C1,但是C1中某个类缺少了C2版本的这个类的某个方法,这时候运行时,B依赖的C2方法被调用到了,就会报这个错。 既然这些问题这么头疼,且难以排查,还容易造成线上故障,那平时在开发过程中如何避免这些问题。 做好二方包的管理

arthas常用命令

笑着哭i 提交于 2020-02-26 07:11:30
arthas三个常用命令 1、watch Watch 类全路径 方法名 “{params,returnObj}” -x 5 2、trace Trace 类全路径 方法名 3、jad Jad 类全路径 方法名 来源: oschina 链接: https://my.oschina.net/u/3745555/blog/3157748

盘点|阿里巴巴高效&优雅的开发者工具

[亡魂溺海] 提交于 2020-01-07 02:50:45
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 点击这里,查看 3种开发者工具及其具体使用场景及方法 Java 线上诊断工具 Arthas Arthas 阿里巴巴2018年9月开源的一款Java线上诊断工具。 工具的使用场景: 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception? 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了? 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗? 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现! 是否有一个全局视角来查看系统的运行状况? 有什么办法可以监控到JVM的实时运行状态? Arthas支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。 使用教程: 基础教程 进阶教程 获取方式:(免费) 开源地址 IDE 插件 Cloud Toolkit Cloud Toolkit 是一款 IDE 插件,可以帮助开发者更高效地开发、测试、诊断并部署应用。通过 Cloud Toolkit,开发者能够方便地将本地应用一键部署到任意机器(本地或云端),并内置 Arthas 诊断、高效执行终端命令和 SQL 等,提供 IntelliJ IDEA 版,Eclipse

Arthas实践

久未见 提交于 2020-01-06 15:05:11
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 此处不再赘述Arthas的安装,直接上使用技巧 官网地址: https://alibaba.github.io/arthas/ 1. 查看线程信息 thread 查看当前线程信息,查看线程的堆栈 参数说明 参数名称 参数说明 id 线程id [n:] 指定最忙的前N个线程并打印堆栈 [b] 找出当前阻塞其他线程的线程 [i <value> ] 指定cpu占比统计的采样间隔,单位为毫秒 1) 查看当前所有线程 thread 输出 2) 查看当前最忙的前n个线程并打印堆栈 thread -n 2 输出 $ thread -n 2 "http-nio-8080-exec-1" Id=147 cpuUsage=18% TIMED_WAITING on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@48a1d8fc at sun.misc.Unsafe.park(Native Method) - waiting on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@48a1d8fc at java.util.concurrent

10 万开发者都知道的部署方式,你居然不知道!?(内含悬赏活动)

我的梦境 提交于 2019-12-27 17:19:03
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 作者 | 铃铛、滚动的轮子 Cloud Toolkit 的一键部署方式 今天为大家介绍的这一款免费 IDE 插件——Cloud Toolkit,已经有超 12 万开发者下载,是一种公认的极速部署方式,如果你还不了解,点击下方视频,立即查看详情。 视频链接: https://www.aliyun.com/daily-act/video?src=https://cloud.video.taobao.com/play/u/2311856963/p/1/e/6/t/1/247487624012.mp4 当您每次修改完代码后,是否正在经历反复地打包?采用 SCP 工具上传?使用 XShell 或 SecureCRT 登陆服务器?替换部署包?重启? 从现在开始,请把这些重复繁琐的工作交给 Cloud Toolkit 吧,它能够帮助开发者更高效地开发、测试、诊断并部署应用。Cloud Toolkit 与主流 IDE 及阿里云其他产品无缝集成,帮助您大大简化应用部署到服务器,尤其是阿里云服务器中的操作。通过插件,可以将本地应用一键部署到任意服务器,甚至云端—— ECS、ECS、EDAS、ACK、ACR 和 小程序云 等,而且还可以通过其内嵌的 Arthas 程序诊断、 Terminal Shell 终端和 MySQL

JAVA服务性能排查完整方案(含Jmeter,Dubbo)

我的未来我决定 提交于 2019-12-20 19:18:26
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 前段时间,博主在做线上服务性能问题排查的工作;想到也有网上的小伙伴们跟博主需求相同,故此贴出方案;以备后用! 一、jmeter远程调用dubbo接口 (1).jmeter安装jmeter-plugins-for-apache-dubbo 参考地址:https://github.com/thubbo/jmeter-plugins-for-apache-dubbo/wiki/%E7%94%A8%E6%88%B7%E6%8C%87%E5%8D%97 插件包可以去github上下载jmeter-plugins-dubbo-${version}-jar-with-dependencies.jar。插件安装目录:${JMETER_HOME}\lib\ext. 下载地址:https://github.com/thubbo/jmeter-plugins-for-apache-dubbo/releases (2).将dubbo接口使用maven dubbo成jar,放入目录${JMETER_HOME}\lib\ext (3).jmeter中创建dubbo接口调用实例,步骤 a.File->New (新建一个测试计划) b.选中上一步新建的测试计划点击鼠标右键,Add->Threads(Users)->Thread Group