HTTP状态码是服务器在响应请求的时候, 返回的那三位数字, 它用来告诉客户端, 这个请求的处理结果到底是怎么样子的, 对于开发者来说, 还有运维人员以及站长而言, 快速的, 准确的, 去理解每一个状态码的具体含义,就是排查线上那些问题的第一步HTTP状态码查询工具, 我们本文提供了一份具有结构化的状态码的速查指南, 还提供了排查指南, 这是为了帮助你在最短的时间之内, 就把那个问题给定位出来。

状态码五大分类

1xx(信息类): 发送的请求已经被接收, 但是还在处理过程中, 并没有完成, 客户端需要继续等待结果。

2xx(成功类)的意思是, 请求得到了成功的处理结果。在实际情况里面, 最经常看见的代码是200(OK)。还有另一个比较常见的代码是204(No Content)。

3xx(重定向类)的意思是, 这种情况要求客户端必须进行额外的操作或者步骤, 常见的具体例子包括301状态码, 这代表永久重定向, 以及302状态码,这代表临时重定向。

4xx(客户端错误)指的是请求本身存在错误HTTP状态码查询工具, 比如404(Not Found), 还有403(Forbidden)这种情况。

5xx(服务器错误): 当服务器在处理请求的时候, 会发生内部的错误, 比如会碰到500(Internal Server Error), 又或者会碰到502(Bad Gateway)。

高频状态码速查

状态码 含义 常见原因
200 成功 正常响应
301 永久重定向 域名迁移、URL变更
302 临时重定向 登录跳转、维护页
401 未授权 Token缺失或过期
403 禁止访问 权限不足、IP被拦截
404 未找到 路径错误、资源被删除
405 方法不允许 请求方法与接口不匹配
429 请求过多 触发限流策略
500 内部服务器错误 代码异常、依赖服务崩溃
502 网关错误 上游服务不可用或超时
503 服务不可用 服务器过载、正在维护
504 网关超时 上游响应超时

按状态码快速排查

遇到4xx错误:

1. 需要去检查一下发出的那个请求里面的网址是不是写错了, 还有那些跟在后面的参数, 格式对不对。

2. 确认认证凭证, 也就是Token或者是Cookie它们是不是有效的。

HTTP状态码查询工具,快速查含义与排查指南(图1)

3. 要去查看那个服务器的访问日志, 然后呢, 得去找到那个具体出现错误的路径在哪里。

遇到5xx错误:

1. 你需要去查看那个应用的日志, 这里面包括标准输出也就是stdout以及错误日这些内容, 目的是通过这样做的办法来定位出现异常的具体堆栈信息。

2. 需要检查一下上游的依赖情况, 看看数据库是不是正常的, 缓存是不是正常的, 第三方API是不是正常的。

3. 确认服务器资源的情况, 这些资源包括CPU、内存以及连接池在内, 是否存在被耗尽的可能。

4. 如果出现的是 502 或者 504, 你需要重点关注反向代理和后端服务之间的通信链路, 检查它们之间的联系是否正常。

使用查询工具的建议

在实地的调查和查找过程中, 建议大家配合使用在线的超文本传输协议状态码查询工具来进行。大家要访问由gz88.cn这个网址所提供的关于状态码的查询页面, 并且在页面上输入任意三个数字, 就可以在一瞬间获得这个状态码的标准定义是什么, 还有常见的触发场景有哪些, 以及对应的排查步骤应该是什么。

可以把该工具的链接收藏成为书签, 等到需要排查的时候一键进行调用, 这样是可以显著地缩短定位所需要花费的时间的。同时建议呢,就是在团队内部去维护一份叫做“本项目状态码速查表”的东西龙南市就业服务平台, 然后把业务这边特有的那些自定义的状态码也纳入进去, 以此来避免和标准的代码相混淆。

权威参考

IETF RFC 9110(HTTP Semantics)它是关于HTTP语义的一份很有权威性的定义文档, 所有那些标准化状态码到底是什么意思, 以及在什么样的场景下去使用它们, 都必须要参照这份文档来进行判断。

一旦线上环境出现了不认识的错误状态码, 或者是程序的正常反应和你原本想的不一样, 那就先去查查像Nginx、Apache或者IIS这些Web服务商发的官方说明文件。查完了之后, 还得去看一下应用层面的那些运行记录, 然后拿这两个信息对一对, 看看哪里出了问题。

一般只要这么做的话, 十分钟左右就能搞清状况是什么。