接口自动化测试系列(二):深入分析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)
總結
以上是生活随笔為你收集整理的接口自动化测试系列(二):深入分析HTTP状态码502的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python报错:UnicodeDeco
- 下一篇: Python字典:字典操作