前言
在实际的生产中不免会出现系统问题,有的在测试环境发现,有的在预发布环境发现,更有甚者在生产过程中出现造成事故。一般在我们发现问题时都会用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直接捕获返回数据
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/154632.html