接口自动化测试系列(二):深入分析HTTP状态码502

一、描述

分类 分类描述
1** 信息,服务器收到请求,需要请求者继续执行操作
2** 成功,操作被成功接收并处理(成功表示服务器成功接收了请求但未必进行处理)
3** 重定向,需要进一步的操作以完成请求
4** 客户端错误:请求包含语法错误或无法完成请求
5** 服务器错误:服务器在处理请求的过程中发生了错误

502:网关错误(bad gateway),后端服务器tomcat没有起来,应用服务的问题(前提是接入层7层正常的情况下)

应用服务问题一种是应用本身问题,原因有二:

1)依赖服务问题:比如依赖服务RT高、依赖的服务有大的读取(mysql慢查,http等),以至于调用方超过超时read时间;

2)服务集群压力大时,也会出现502超时(502理解为不可响应或响应不过来,其实还是不可响应)。

二、502检查思路:

1、必现502:应用“挂了”

(1)后端机器上检查:

$ ps -ef |grep java #检查进程是否在

$ sudo netstat -lntp |grep PORT #检查端口有没有起来

$curl -I 127.0.0.1:PORT/health #应用健康检查测试下,Your health check path

(2)上面都正常,看下接入层access.log有没有进来。

$ tail -300f access.log |grep xxxx | #grep下你的关键字

$ curl -I 10.10.10.10:80/java_hc #上面都正常情况下,去接入层检查下

2、偶现502

(1)CPU使用率高,QPS增加

考虑有大流量,后端压力导致短暂不可用,考虑临时扩容。

(2)检查应用本身nginx read超时时间配置

proxy_read_timeout              2s; # vim /opt/nginx/nginx.conf

如果某些正常请求耗时在2s左右,那么会有少量大于2s的请求是502的。可以试着把上面耗时时间调大,看问题是否缓解。优化本身链路请求耗时是根本上的解决办法。

(3)检查接入层nginx read的配置

同(2)

你可能感兴趣的:(软件测试相关:自动化测试)