远程调试部署在容器中的springboot项目「建议收藏」

远程调试部署在容器中的springboot项目「建议收藏」问题:访问网站,会根据ip判断访客所处位置,但部分ip插入数据库失败。 以为是一次小问题,很快就解决了,没想到最终花了6个小时左右,才搞清楚。分析 :1、将本地程序跑起来,发现一切正常,可以插入到数据库。但问题在线上确实妥妥的出现的,而我现在日志级别是info,没有错误日志。所有准备Debug线上程序,之前只debug过使用基本的tomcat发布。而我现在的jar是使用docker构建的镜像,运行的镜像。 2、问题从线上转化到了,我需要远程debug线上程序发现问题,并将之解决。查各种资料,配置

大家好,又见面了,我是你们的朋友全栈君。

问题:

访问网站,会根据ip判断访客所处位置,但部分ip插入数据库失败。 以为是一次小问题,很快就解决了,没想到最终花了6个小时左右,才搞清楚。

分析 :

1、将本地程序跑起来,发现一切正常,可以插入到数据库。但问题在线上确实妥妥的出现的,而我现在日志级别是info,没有错误日志。所有准备Debug线上程序,之前只debug过使用基本的tomcat发布。而我现在的jar是使用docker构建的镜像,运行的镜像。 2、问题从线上转化到了,我需要远程debug线上程序发现问题,并将之解决。查各种资料,配置端口进行调试。从起开启各种踩坑之路。 首先百度到的基本上就这几种:

远程调试部署在容器中的springboot项目「建议收藏」


远程调试部署在容器中的springboot项目「建议收藏」


远程调试部署在容器中的springboot项目「建议收藏」


远程调试部署在容器中的springboot项目「建议收藏」


远程调试部署在容器中的springboot项目「建议收藏」

远程调试部署在容器中的springboot项目「建议收藏」



以上基本上就涵盖了大部分博客内容,我都试过,但都没用。但不能说博文错着,人家博客可能就适合自己当时的问题。且解决了。

我呢,只能继续寻找问题的答案: 继续分析:明明启动了程序了,也修改了DockerFile文件了,问题出在哪里了。 

远程调试部署在容器中的springboot项目「建议收藏」

既然启动了,那就看端口是否监听,继续百度。通过查看启动日志方式,查看该端口是不是被监听着,但日志可以发现是有的,也没问题。

远程调试部署在容器中的springboot项目「建议收藏」

通过 netstat -tnlp | grep 端口号 查看端口是否启动 发现没有启动,找到问题了,该端口号没有启动,继续思考。为什么日志中已经显示监听状态,但通过netstat却找不到该端口呢。 于是继续百度,终于看到了几句话,大致想明白了,立马验证,果不其然,就是他导致的。先贴上截图: 

远程调试部署在容器中的springboot项目「建议收藏」

瞬间明白了,我只是在docker容器中开放了该端口,但是我并没有在启动时映射出来,于是修改我的启动脚本,加上映射出来的端口,然后远程debug,直接就连通了。然后远程都好了,ip插入不到数据库问题,还有什么难,几分钟就解决了 

远程调试部署在容器中的springboot项目「建议收藏」

总结:

1、在此次解决bug时,学会远程debug docker容器中的技巧,以后线上有问题能很快的定位,且可以启动多线程模式,也不影响其他人。 2、对docker容器理解更加深刻了。

 

原文链接:http://ganshuo8.com/article/baf44d183bd2cc60fbbf1dc2690c9d40

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/147122.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • QCustomPlot的基本使用[通俗易懂]

    QCustomPlot的基本使用[通俗易懂]QCustomPlot是QT下一个方便易用的绘图工具,只有两个文件qcustomplot.h和qcustomplot.cpp组成。源文件和使用文档可从官方网站下载。官方网站:http://www.qcustomplot.com/下面介绍下基本使用:1、将qcustomplot.cpp和qcustomplot.h拷贝到工程目录下,并在工程中添加文件。并在工程的pro文

    2022年9月25日
    0
  • LARS Lasso[通俗易懂]

    LARS Lasso[通俗易懂]例子LassoLars是一个使用LARS算法的lasso模型,不同于基于坐标下降法的实现,它可以得到一个精确解,也就是一个关于自身参数标准化后的一个分段线性解。>>>fromsklearnimportlinear_model>>>reg=linear_model.LassoLars(…

    2022年6月15日
    34
  • linux fork函数浅析

    linux fork函数浅析

    2021年11月28日
    32
  • LDAP服务器搭建新手指南[通俗易懂]

    LDAP服务器搭建新手指南[通俗易懂]Normal0false7.8

    2022年5月14日
    261
  • p6spy mysql8_P6Spy配置使用

    p6spy mysql8_P6Spy配置使用P6Spy是一个可以用来在应用程序中拦截和修改数据操作语句的开源框架。通过P6Spy我们可以对SQL语句进行拦截,相当于一个SQL语句的记录器,这样我们可以用它来作相关的分析,比如性能分析。P6SPY提供了如下几个功能:记录SQL语句的执行时间戳。记录SQL语句类型记录SQL填入参数的和没有填入参数的SQL语句根据配置的时间控制SQL语句的执行时间,对超出时间的SQL语句输出到日志文件中下面是p…

    2022年10月6日
    0
  • JAVA实现数据库_数据库是如何解决并发问题

    JAVA实现数据库_数据库是如何解决并发问题Java开源数据库引擎,数据库计算封闭性的一站式解决方案。

    2022年10月26日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号