远程调试及热部署

目的

​ 远程调试:有时候本地调试满足不了需要,比如该服务引用了其他的服务,拿公有云说想要调试scan-service,因为他用到了ssk的服务,而我们本地起不了ssk或者说起来也没啥用,因此可以使用远程调试的方式帮助我们查找问题。

​ 热部署:热部署是为了避免我们修改代码每次都需要重启服务带来的耗时,spring提供了自带的热部署方式,但是它的机制还是监听到有修改会重启服务,为了避免这个问题可以使用IDEA的插件 JRebel。

​ 远程热部署:比如我们在测试环境通过调试找出了问题,但是每次去以传jar包的方式频繁的部署服务也很耗时,也可以使用JRebel进行远程代码的热部署。

​ 本服务链路调用查看:有时候一个请求可能会涉及很多操作,我们可以通过JrebelX 查看这个请求调用的所有链路(本方法,不包含服务之间调用的链路)。

​ 貌似这些都依赖于java的agent机制,感兴趣的可以研究研究。

注意:开发环境玩玩得了。

远程调试

image-20220806103901012

image-20220806103954938

image-20220806104145112

现在我们把包传到服务器上看一看效果

启动命令

nohup java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:10023 ./learn-debug-1.0.0.jar &

image-20220806104631383

image-20220806104803707

image-20220806104842542

image-20220806104919927

本地热部署

使用JRebel插件

IDEA里设置更新按钮的操作:更新classes文件和resources

image-20220806105430510

image-20220806105841977

image-20220806105957841

刷新前

image-20220806110039437

image-20220806110033023

修改代码不重启服务,点刷新后

image-20220806110136868

image-20220806110236773

image-20220806110307407

远程热部署

插件下载地址:https://www.jrebel.com/products/jrebel/download/prev-releases

生成UUID : https://www.uuidgenerator.net/

image-20220806112028598

bash jrebel/bin/activate.sh http://激活地址/9d2e2710-a2de-47b9-80c6-1c8a9b4148eb email地址
java -jar jrebel/jrebel.jar -set-remote-password 12345321

image-20220806112356482

image-20220806112517201

image-20220806112622659

nohup java -jar -agentpath:/home/app/jrebel-stabel/jrebel/lib/libjrebel64.so -Drebel.remoting_plugin=true  ./learn-debug-1.0.0.jar &

image-20220806120051329

image-20220806120226832

image-20220806120338873

方法链路查看

可以查看到这个方法具体的调用过程,以及数据库查询、es查询等等

image-20220806145639651

image-20220806145609239

image-20220806145617042

自行搭建jrebel激活服务器

github: https://github.com/Byron4j/JrebelLicenseServerforJava

克隆下来打个包

根据readme.md 打个docker 镜像

Dockerfile


FROM java:8-jre-alpine

ENV PORT 8086

ADD target/JrebelBrainsLicenseServerforJava-1.0-SNAPSHOT-jar-with-dependencies.jar /JrebelBrains.jar
CMD java -jar /JrebelBrains.jar -p $PORT
docker run -d --name jrebel-ls --restart always -e PORT=8086 -p 8086:8086 jrebel-ls

image-20220806121850791

image-20220806121859871

这就成功了!

Copyright © TaoQZ 2019 all right reserved,powered by Gitbook作者联系方式:taoqingzhou@gmail.com 修订时间: 2024-11-19 17:25:43

results matching ""

    No results matching ""

    results matching ""

      No results matching ""