服务器重启项目引发的nginx 502 Bad Gateway解决

服务器重启项目引发的nginx 502 Bad Gateway解决一、问题起因:ssh登录远程服务器重启项目(第一次),未等tomcat启动完成,直接访问项目的对应后台管理系统网站,导致网页一直加载不出来,心急又去重复启动项目(第二次),再次访问网页报错:502BadGatewaynginx。二、解决思路:…这里饶了很多弯路。前面几步是没有解决的错误思路,想要看最终解决,直接跳过,去查看最后的总结…1.首先想到去查看nginx日志,…

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

一、问题起因:

ssh登录远程服务器重启项目(第一次),未等tomcat启动完成,直接访问项目的对应后台管理系统网站,导致网页一直加载不出来,心急又去重复启动项目(第二次),再次访问网页报错:502 Bad Gateway nginx。

二、解决思路:

…这里饶了很多弯路。前面几步是没有解决的错误思路,想要看最终解决,直接跳过,去查看最后的总结…

1.首先想到去查看nginx日志,结果error.log内并无错误日志:

服务器重启项目引发的nginx 502 Bad Gateway解决

最新一条时间是10/17,明显不是nginx出了问题,并且另一个服务器端口转发是正常的,故排除。服务器重启项目引发的nginx 502 Bad Gateway解决

重启项目之后依然不行(第三次)。

2.查阅资料,有个文章说,可能是内存磁盘满了…df -h 发现内存占用了83%,感觉也有可能:

(下图是费了九牛二虎之力,省了10%磁盘空间后的截图。。。我有一篇博客专门讲清理磁盘)清理过程中,发现nohup.out很占内存,是可以清理的,亲测有效,命令:

第一种:cp /dev/null nohup.out

第二种:cat /dev/null > nohup.out

服务器重启项目引发的nginx 502 Bad Gateway解决

再次部署重启项目(第四次)。此时发现重启项目时,tomcat启动zookeeper疯狂报错:

java.lang.NoClassDefFoundError: org/apache/zookeeper/proto/SetWatches

服务器重启项目引发的nginx 502 Bad Gateway解决

3.然后想是不是zookeeper出了问题?zookeeper是连接项目的桥梁,提供注册然后建立连接调用。

ps:zookeeper命令:

  • 1. 启动ZK服务:       sh bin/zkServer.sh start
  • 2. 查看ZK服务状态: sh bin/zkServer.sh status
  • 3. 停止ZK服务:       sh bin/zkServer.sh stop
  • 4. 重启ZK服务:       sh bin/zkServer.sh restart

进入项目的zookeeper目录一顿操作,还是没有解决,继续报错:java.lang.NoClassDefFoundError: org/apache/zookeeper/proto/SetWatches(此时已经第五次重启项目)

4.思考这个异常的解决方案,莫非是jar包冲突?毕竟报错NoClassDefFoundError呢,某些zookeeper的类没加载到?但是发现,在本地项目是可以完美运行的,所以项目代码是没有问题的。

继续搜资料:借鉴一下人家的分析:

`tomcat启动,初始化webcontext;

`初始化spring, spring初始某些些bean,这些bean包括了zookeeper的连接相关的bean;
`这时zkClient(独立线程)已经连接上服务器了,但是classloader没有加载到org/apache/zookeeper/proto/SetWatches类;
`spring初始化失败,导致Tomcat webcontext初始化也失败,应用在挂起状态,但zkClient线程还是正常的;
`zookeeper服务器重启,zkClient开始重连,连接上zookeeper服务器;
`zkClient触发watch的一些代码,ClassLoader尝试加载org/apache/zookeeper/proto/SetWatches类,但是发现找不到类,于是`抛出异常;
`zkClient捕获到异常,认为重连失败,close掉connection,休眠几秒之后,再次重连;
于是出现了zkClient反复重试连接zookeeper服务器,而且都是秒连秒断的情况。

三、【最终解决】

5.【最终解决】终于意识到是一开始项目就没有正常启动!而zkClient线程在应用程序进程启动失败前已经正常启动了,所以导致zkClient没有在jvm中找到SetWatches该类!于是查看linux上的java进程:ps -ef | grep java

服务器重启项目引发的nginx 502 Bad Gateway解决

从头至尾各个参数的意思是:

(1):UID      :程序被该 UID 所拥有

(2):PID      :就是这个程序的 ID 

(3):PPID    :则是其上级父程序的ID

(4):C          :CPU使用的资源百分比

(5):STIME :系统启动时间

(6):TTY     :登入者的终端机位置

(7):TIME   :使用掉的CPU时间。

(8):CMD   :所下达的是什么指令

震惊的发现怎么那么多tomcat实例!(。。想想我倒是重启过多少次项目吧)然后果断kill掉:kill  pid

服务器重启项目引发的nginx 502 Bad Gateway解决

然后再次重启项目。

再次重启的时候tomcat执行sh shutdown.sh,发现报错,更验证了之前的猜想,因为关于tomcat的实例我都kill掉了啊,所以再执行:sh startup.sh

打印tomcat日志命令:tail -f ../logs/catalina.out

漫长的等待中。。。。没有zookeeper报错!!!

待tomcat启动完成后,访问项目,完美打开…

四、总结

1.查看linux上的java进程:ps -ef | grep java

2.杀掉重复的进程:kill  pid (注意别误kill其他进程)

3.再次重启项目。

最后如果还是没有解决问题,关注私聊博主解决问题。

服务器重启项目引发的nginx 502 Bad Gateway解决

 服务器重启项目引发的nginx 502 Bad Gateway解决

 

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

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

(0)
上一篇 2022年6月24日 下午5:36
下一篇 2022年6月24日 下午5:36


相关推荐

  • stringtokenizer是什么意思_string copy

    stringtokenizer是什么意思_string copyStringTokenizer可以将一个字符串分解为一个一个的单词或者标记。常用方法如下:methodcontentintcountTokens()返回nextToken方法被调用的次数。booleanhasMoreTokens()返回是否还有分隔符。booleanhasMoreElements()返回是否还有分隔符。StringnextTo…

    2026年1月27日
    3
  • 当教程泛滥,OpenClaw 的“生产力悖论”正在浮现

    当教程泛滥,OpenClaw 的“生产力悖论”正在浮现

    2026年3月14日
    2
  • 关于垃圾回收CollectGarbage()的使用

    网络上流传的关于JS释放内存的方式~大概就是只说过。将变量使用以后设置为null,但是IE的GC是当鼠标点击最小化按钮时发生~~也就是说我们从程序上看已经释放了内存其实之前更本没有释放~~~研究jsvm的时候,发现js.lang.System里面定义了gc()方法System.gc=function(){  if(System.isIeBrowser())  {…

    2022年4月7日
    62
  • Linux中磁盘的管理(格式化、分区、挂载)

    Linux中磁盘的管理(格式化、分区、挂载)Linux 磁盘的管理 分区 格式化 挂载 一 认识磁盘 1 什么是磁盘 磁盘是一种计算机的外部存储器设备 由一个或多个覆盖有磁性材料的铝制或玻璃制的碟片组成 用来存储用户的信息 这种信息可以反复地被读取和改写 绝大多数磁盘被永久封存在一个密封的盒子里 2 磁盘运行机理 简单来说就是多个盘片之间靠主轴连接 电机带动主轴做旋转运动 通过多个磁头臂的摇摆和磁盘的旋转 磁头就可以在磁盘旋转的过程

    2026年3月20日
    2
  • Andon系统优势

    Andon系统优势Andon 系统优势凌犀 Andon 系统与传统 Andon 系统的对比优势 1 凌犀 Andon 系统采用全无线区域覆盖方案在车间复杂不利布线的环境下 凌犀 Andon 系统采用全无线区域覆盖 与传统有线 A

    2026年3月26日
    3
  • mux-vlan原理_三层交换机配置实例

    mux-vlan原理_三层交换机配置实例学网络,就在IE-LAB国内高端网络工程师培养基地MUXVLAN(MultiplexVLAN)提供了一种通过VLAN进行网络资源控制的机制。通过MUXVLAN提供的二层流量隔离的机制可以实现企业内部员工之间互相通信,而企业外来访客之间的互访是隔离的。为了实现报文之间的二层隔离,用户可以将不同的端口加入不同的VLAN,但这样会浪费有限的VLAN资源。采用端口隔离功能,可以实现同-V…

    2026年1月25日
    4

发表回复

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

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