首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

一边制造,一边讲解http状态码502

Status Code 也是后端服务经常返回的状态码,试想一下,对于每个状态码,如果你能通过一些修改或配置来人为复现它,是不是会更利于你去掌握它呢?本文就是通过制造它们的方式来学习它们。

在超时的场景下会比较像,经常有人不能区分它们。产生的原因也常常会和会有内在的关联,你都了解吗?本文不光制造它们,而且会循序渐进,在对比之中制造它们。

复现环境说明

系统环境和软件环境为:。

再来介绍一下本文复现会用到的和的几个配置。

php-fpm配置:

所有复现场景都是在根目录下创建一个文件,然后通过访问 来查看响应,代码如下:

下面来逐一复现这些状态码的产生场景。

502

定义

,,网关错误,它往往表示网关从上游服务器中接收到的响应是无效的。

先来了解一下网关是什么含义,从宏观定义上来说只要连接两个不同的网络的设备都可以叫网关,其实具体到应用层请求这一领域,网关就是指是转发其他服务器通信数据的服务器,对于本文的复现环境而言,当客户端请求数据到达,负责把请求转交给(即)进行处理,那么在这个场景中就是网关。

并不是指网关本身出了问题,而是从上游接收响应出了问题,比如由于上游服务自身超时导致不能产生响应数据,或者上游不按照协议约定来返回数据导致网关不能正常解析。

复现路径1

关闭进程,返回。

这个比较容易理解,参照上面的定义,因为进程关闭,连接不上,即的上层无响应数据导致的网关错误。

错误日志如下:

复现路径2

启动进程,修改的和代码的时间来复现。

php代码:

php-fpm.conf配置:

nginx配置:

设置的最大执行时间是5s,但是脚本需要的执行时间大于7s,所以进程执行5s时就回退出,此时脚本没有正常执行完,返回给网关的数据为空,于是导致。

错误日志如下:

错误日志如下:

504

定义

,,网关超时。

它表示网关没有从上游及时获取响应数据。注意它和在超时场景下的区别,是指上游因为超过自身允许的执行时间而不能正常生成响应数据,而是指在还未执行完成的某一时刻,由于超过了自身的超时时间,则以为上游没有按照设置时间返回响应数据就会返回, 此时对于而言还会继续执行下去,直到执行完成。

复现路径

代码

配置:

配置:

脚本执行时间需要7s,远小于的一次请求的最大请求时间30s,所以脚本可以正常完成执行,这个可以查看文件内容来得到证明。

由于从读取数据的超时时间为5s,所以在5s的时科,还未从获取到响应数据,于是返回。

错误日志如下:

499

定义

, , 客户端主动断开连接。

是指一次http请求在客户端指定的时间内没有返回响应,此时,客户端会主动断开连接,此时表象为客户端无响应返回,而的日志中会 为。

此状态码在浏览器请求时几乎不可见,因为浏览器默认的超时时间会很长。多见于服务之间的调用,在业务架构中常常会分层设计,拆分为不同的子系统或者微服务,这样系统之间就会常常通过方式来请求,并且会设置每次请求的超时时间,当请求在请求时间内所调用的上游服务无返回,则会主动关闭连接,上游服务日志中会记录一条。

复现路径

我们用上面复现时相同的代码和配置。

代码

配置:

配置:

我们在终端使用命令来请求, 表示超时时间,单位为秒

返回为:

的日志的为,如下:

500

定义

, , 服务器内部错误,服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。

日常开发中错误几乎都是由于脚本语法出现错误导致无法正常执行。

复现路径

代码:

由于代码语法错误,执行失败,然后告诉这一结果,则返回。

错误日志:

总结

是由于超过客户端设置的请求超时时间,客户端主动关闭连接,服务器为。

多是由于代码语法错误,导致执行错误并且会把错误结果通知服务器,服务器则报。

是由于由于在自身的执行时间要求内无法按时完成,则无法返回给服务器正常响应,此时服务器会返回。

是在服务器设置的超时时间内无法按时返回响应,服务器则返回。

都会因为超时而产生,区别是超时超了谁的时,是超了客户端本身的连接时间,是超了的执行时间,是超了服务器本身的最大允许读取时间。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181127G09SZW00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券