听说你没法在JRE中使用arthas?不,你可以
本文是《容器中的Java》系列文章之 5/n ,欢迎关注后续连载 :) 。
- JVM如何获取当前容器的资源限制?——容器中的Java 1
- Java Agent踩坑之appendToSystemClassLoaderSearch问题——容器中的Java 2
- 让 Java Agent 在 Dragonwell 上更好用——容器中的Java 3
- 为什么在容器中1号进程挂不上arthas?——容器中的Java 4
之前经常遇到的问题是,排查问题需要挂arthas,但客户用的是JRE,没法挂载arthas。就只能让客户更换成JDK,再重新部署、排查问题。
很多有用的现场,在这个过程中也会丢失,最终导致问题排查效率降低。于是就探索了下如何在JRE环境中,使用artahs。
复现问题
如果一个Bug 没法复现,研发大概率是无法修复的。 —— by 网友
我们写一个Java例子和Dockerfile:
1 | public class Main { |
1 | FROM openjdk:8-jdk-alpine as builder |
构建并正常启动应用,并尝试用arthas attach,此处为了便于了解原理,我们使用as.sh来执行: