502错误是什么、应该怎么排查?(3)
502错误是什么、应该怎么排查

第二个原因,也是造成502状态码最常见的原因,就是服务端应用进程崩了(crash)。
服务端崩了,也就是当前没有一个进程在监听服务器端口,而此时你却尝试向一个不存在的端口发数据,服务器的linux内核协议栈就会响应一个RST数据包。
同样,这时候nginx也会给客户端一个502。

在开发过程中,这种情况是最常见的。
现在我们大部分的服务器都会将挂掉的服务重启,因此我们需要判断下服务是否曾经崩溃过。
如果你有对服务端的cpu或者内存做过监控,可以看下CPU或内存的监控图是否出现过断崖式的突然下跌。
如果有,十有八九百,就是你的服务端应用程序曾经崩溃过。

除此之外你还通过下面的命令,看下进程上次的启动时间是什么时候。
ps -o lstart {pid}
比如我要看的进程id是13515,命令就需要像下面这样。
# ps -o lstart 13515
STARTED
Wed Aug 31 14:28:53 2022
可以看到它上次的启动时间是8月31日,这个时间如果跟你印象中的操作时间有差距,那说明进程可能是崩了之后被重新拉起了。
遇到这种问题,最重要的是找出崩溃的原因,崩溃的原因就多种多样了,比如,对未初始化的内存地址进行写操作,或者内存访问越界(数组arr长度明明只有2,代码却读arr[3])。
这种情况几乎都是程序有代码逻辑问题,崩溃一般也会留下代码堆栈,可以根据堆栈报错去排查问题,修复之后就好了。比如下面这张图是golang的报错堆栈信息,其他语言的也类似。
相关阅读
-
kafka是什么 主要特点有哪些?
IT袋网网为你介绍kafka是什么的IT知识,一定能解决您的问题的,一起来了解吧! Kafka 是一个开源的分布式流式平台,它可以处理大量的实时数据,并提供高吞吐量,低延迟,高可靠性和高可扩
-
access数据库入门教程 数据库零基础入门教学
今天小编详解access数据库入门教程和数据库零基础入门教学的相关介绍,继续往下看吧! Access数据库除了选择查询,还有操作查询,它们有: 更新查询 生成表查询 追加查询 删除查询 来看看
-
c语言怎么输出语句 C#中怎样快速输出{get;set;}
对于c#初学者来说,可能是受教程的影响,看到老师在Visual Studio中瞬间就可以快速敲出{get;set;},但是自己却不知道怎么敲?老师也不告诉,其实老师这样做是有目的的,让你自己多动手去熟悉
-
使用双异步后 如何保证数据一致性?
小编为大家说一说使用双异步后的相关知识,下面小编为您详细解答 很简单,通过对比Excel文件行数和入库数量是否相等即可。 那么,如何获取异步线程的返回值呢? 一、通过Future获取异步返


