最近在学习线上调优的课程,get一项小技巧,在此做个记录分享,方便查阅。
之前在上家公司上班的时候,有遇到过同样的代码跑在不同的服务器上的结果是不一致的,这时候怎么办呢?当时还是缺少排查技巧。只能从理论来判断问题出现在哪里。如果是在本地开发没有问题,线上就有问题。那么可能性有很多,这里列举一下自己知道的一些原因。
1⃣️本地和线上的版本不一致导致的
2⃣️配置文件不一致,因为线上的路径跟本地的文件路径会不一致,特别是Linux下面是没有盘符的
3⃣️jdk的版本不一致
4⃣️数据库的配置不一致。
哈哈,言归正传,来实际操作一下今天要分享的新技能。
首先,在本地搭建一个以springboot为框架的web项目。在添加一个controller,写一个简单的方法,定义一个Grade类,然后改变类的属性,最后输出对应的日志。类见截图:
这里用到了lombok技术,不懂得百度即可。 该服务我指定的访问端口为9090,在application文件中配置就可以。构建完成之后,通过maven命令 mvn clean package -DskipTests,打成一个jar包,之后上传到阿里云服务器。
其次,在服务器上启动jar服务,命令如下: nohup java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=42917 -jar cloud-test.jar &,这里42917是远程debug要访问的端口,cloud-test.jar是服务名称。查看nohup.out日志,看看是否成功启动,命令:tail -f nohup.out。
然后,在本地idea中打开项目,配置远程remote信息,截图如下
配置完成了,点击debug按钮,启动成功后会有如下信息。
最后在55行打个断点,打开浏览器,输入服务器ip+项目端口号+方法访问路径。ok,断点成功进来。尝试成功,虽然大多数情况线上不会给debug的机会,但是多掌握一门技术,说不定哪天就用到了呢。
结束语:不积硅步无以至千里。