远程调试部署在容器中的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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • httprunner(3)用脚手架快速搭建项目[通俗易懂]

    httprunner(3)用脚手架快速搭建项目[通俗易懂]前言如何快速搭建一个httprunner项目呢?我们可以使用脚手架,脚手架就是自动地创建一些目录,形成一个项目的架构,不需要我们再手动的去创建查看创建新项目的命令先来查看一下帮助命令httpr

    2022年7月31日
    3
  • 基础版的音频功放电路(A类功放电路、B类功放电路、C类功放电路、D类功放电路、G类功放电路、H类功放电路、K类功放电路、T类功放电路)[通俗易懂]

    基础版的音频功放电路(A类功放电路、B类功放电路、C类功放电路、D类功放电路、G类功放电路、H类功放电路、K类功放电路、T类功放电路)[通俗易懂]  作为硬件工程师,特别是做纯粹模拟电路、应用于音频功放的工程师,对于A类,B类,AB类,D类,G类,H类,T类功放应该特别熟悉。大多数工程师或许只知道其中的一部分、或者知道大概,为了让更多的工程师掌握更加详尽的音频功放知识,下文对以上说的音频功放做详细的说明。  引用地址:http://www.eepw.com.cn/article/201611/340477.htm  功放,顾名思义,就是功率放大的缩写。与电压或者电流放大来说,功放要求获得一定的、不失真的功率,一般在大信号状态下工作,因此,功放电路

    2022年6月2日
    45
  • 计算机网络协议详解怎么写_自考短线好还是长线好

    计算机网络协议详解怎么写_自考短线好还是长线好计算机网络协议详解:本篇文章主要总结一些常见的网络基础概念以及Linux系统中的网络相关设置方法,具体包括OSI七层协议、TCP/IP协议相关内容。

    2022年10月2日
    5
  • IPerf简单使用

    IPerf简单使用一点睛 1IPerf 是一个服务器 客户端运行的程序 2 在服务器端运行 iPerf 也需要在客户端运行 IPerf 3 服务器端 在命令行下使用 iperf 加参数 s 4 客户端 在命令行下使用 iperf 加参数 c 5 经过一段时间测试 默认 10 秒 在 Server 端和 Client 端就会打印出网络连接的各种性能参数 二实战 1 准备服务器和客户端服务器 192 168 0

    2025年8月30日
    0
  • 三菱PLC FB块的创建与使用

    三菱PLC FB块的创建与使用三菱PLCFB块的创建与使用在PLC编写程序过程中经常遇到一些重复逻辑控制的梯形图,比如流水线控制,气缸报警等等,这时候可以使用FB块来便捷编程,减少工作量与出错率。本例创建一个简单的单控气缸异常报警的FB块。所需输入有:气缸输出,气缸工作位,气缸原位,复位。所需输出有:工作位异常,原位异常。1,创建FB块:鼠标右击FB管理:选择新建数据:填写数据名并确认:2,编辑局部标签:其中INPUT为输入,OUTPUT为输出。3,编辑F…

    2025年8月29日
    3
  • C#textbox 密码输入框「建议收藏」

    C#textbox 密码输入框「建议收藏」C#textbox密码输入框C#中,怎么让textbox输入数字时显示为*号,因为用它作为验证输入密码设置TextBox的PasswordChar属性为*

    2022年7月25日
    25

发表回复

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

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