idea 远程debug阿里云服务器springboot项目

前言

在实际的生产中不免会出现系统问题,有的在测试环境发现,有的在预发布环境发现,更有甚者在生产过程中出现造成事故。一般在我们发现问题时都会用debug来查找原因,但是有些时候我们本地环境由于某些原因根本不能复现线上问题。那么,这个时候我们可以考虑用远程debug来排查问题。

意见和建议

线上远程debug的断点会阻塞线程,生产环境慎用。如果必须使用建议在用户访问量不高的情况下使用,严重情况下会导致服务不可用。

技术要点

JAR包启动参数增加:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=18765

18765为debug通信端口,可根据需要任意配置

小试牛刀

云服务安全组与物理机防火墙放行

1、云服务器开启安全组端口
3333 项目本身运行端口
18765 debug端口
在这里插入图片描述

注:不使用云服务器不用配置安全规格,只需要打开防火墙等即可。

2、物理服务器开启防火墙(iptables方式)

清除系统自带防火墙改用iptables
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl mask firewalld.service

然后,安装并开启iptables
yum install iptables-services -y
systemctl enable iptables
systemctl start iptables

再在iptables中加端口限制规则
vim /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3333-j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 18765 -j ACCEPT

重启iptables
systemctl enable iptables.service
systemctl restart iptables.service

Idea增加remote启动项

本地idea代码增加remote启动项,并设置服务器host\ip
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=18765

Idea高版本不需要以下参数:
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=18765
-Xnoagent -Djava.compiler=NONE -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=18765
在这里插入图片描述

服务端JAR增加参数并启动

1、增加JAR参数
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=18765

2、启动JAR
nohup java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=18765 i-finance-0.0.1-SNAPSHOT.jar &
在这里插入图片描述

本地项目启动远程debug

本地启动远程debug模式
在这里插入图片描述

postman测试debug

1、post按照正常流程请求服务器接口
在这里插入图片描述

2、直接就会同步debug到本地项目了
在这里插入图片描述

3、放开本地断点postman直接捕获返回数据

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_39970883/article/details/130524313