调优-Spring常规项目和SpringBoot远程调试
Spring常规项目和SpringBoot远程调试
1. 常规Spring项目
war包在tomcat/webapps下启动并运行
相关远程服务器tomcat配置和端口访问问题见
《Tomcat性能监控与调优.md》
2. SpringBoot项目
2.0 20190122补充
执行运行SpringBoot的war包,命令行参数来自idea的Remote配置
# 使用war包方式
<packaging>war</packaging>
mvn clean package -Dmaven.test.skip=true
2.1 直接将源码上传到远程服务器【实测失败】
(或在git、snv仓库中继续操作)
2.1.1 在pom.xml中配置启动参数
- 配置启动参数
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <!--远程调试的端口--> <configuration> <jvmArguments> -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 </jvmArguments> </configuration> </plugin> </plugins> </build>
打包上传并解压到linux服务器
//打包 tar -zcvf spring-boot-test-with-pom-config.tar.gz spring-boot-test/ //rz命令上传 ... //解压 tar -zxvf spring-boot-test-with-pom-config.tar.gz
- 启动SpringBoot项目
mvn package spring-boot:run -Dmaven.test.skip=true //or mvn clean package spring-boot:run -Dmaven.test.skip=true
- 远程调试端口成功启动提示
>[INFO] <<< spring-boot-maven-plugin:2.0.4.RELEASE:run (default-cli) @ SpringBoot <<< [INFO] [INFO] --- spring-boot-maven-plugin:2.0.4.RELEASE:run (default-cli) @ SpringBoot --- [INFO] Attaching agents: [] Listening for transport dt_socket at address: 8000
测试
Step A> idea添加Remote configuration
Step B> 添加linux服务器ip和8000端口(虚拟机下由于网段不同导致不能访问参考《Tomcat性能监控与调优.md》)
Step C> 启动Remote (同时关闭idea中的tomcat进程)
Step D> 浏览器中访问测试网址
//此8081端口是通过springboot中server.port=8081指定 http://192.168.85.128:8081/api/user/adduser?name=11&age=2
注1:
上述 Step C、Step D可能出现连接失败或者请求失败
排查过程
//首先确定linux环境中的8000和8081端口是否都启动
netstat -ntlp
//环境较为复杂时执行
netstat -ntlp | grep 80*
结果:
用于远程调试的8000端口启动成功,用于SpringBoot的8081端口未启动 (实测未能启动成功,暂停调试)
2.1.2 使用命令行添加启动命令,pom.xml中不配置
按照上述步骤打包源码到linux服务器
执行命令行
//8000失败 mvn package spring-boot:run -Dmaven.test.skip=true -Drun.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000" //8000失败 mvn clean package spring-boot:run -Dmaven.test.skip=true -Drun.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000"
pom.xml添加打包方式
<packaging>jar</packaging>
生成jar包
mvn clean package -Dmaven.test.skip=true
按照上述步骤将jar包提交到linux系统并启动jar包
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 -jar SpringBoot-0.0.1-SNAPSHOT.jar
注2:
实测linux系统中8000和8081端口都已经启动时,idea无法连接到8000的调试端口,8081的接口也无法访问。尝试关闭防火墙也无效。解决方法:将以上2个端口都加入防火墙,并启动防火墙。修改和启动防火墙见 http://tech.jiangjiesheng.cn/dev/study/java/mmall/backend-1/ 【Ctrl+F搜索iptables】。然后重新连接并测试。
完成日期:20190110
正文到此结束