• Java生产环境调优—线上代码debug


    最近在学习线上调优的课程,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的机会,但是多掌握一门技术,说不定哪天就用到了呢。

      结束语:不积硅步无以至千里。

  • 相关阅读:
    Android服务之bindService源代码分析
    [iOS 高级] iOS远程推送与本地推送大致流程
    redis集群
    面试你之前,我希望在简历上看到这些!
    解决安卓出现导入第三方包反复的错误
    【PA2012】【BZOJ4289】Tax
    Spark jdbc postgresql数据库连接和写入操作源代码解读
    Java中hashcode的理解
    CvArr、Mat、CvMat、IplImage、BYTE转换
    CSDN日报20170413 ——《天天写业务代码的那些年,我们是怎样成长过来的》
  • 原文地址:https://www.cnblogs.com/cecWork/p/13056774.html
Copyright © 2020-2023  润新知