为什么要了解 go 底层
go服务出现了 502状态码
nginx 代理到 go 服务
-
- http 服务没启动
-
- http 请求超时,关闭了 tcp 连接
1/**
2* @Author: maozhongyu
3* @Desc:
4* @Date: 2024/7/27
5**/
6package pprofdemo
7
8import (
9 "net/http"
10 "testing"
11 "time"
12)
13
14var queue chan interface{}
15
16func TestServer(t *testing.T) {
17 // time curl --request POST 'http://127.0.0.1:8080/ping' -v
18 server := http.Server{
19 Addr: "0.0.0.0:8080",
20 WriteTimeout: time.Second * 3,
21 }
22 http.HandleFunc("/ping", func(w http.ResponseWriter, r *http.Request) {
23 time.Sleep(time.Second * 5)
24 w.Write([]byte(r.URL.Path + " > ping response"))
25 })
26 err := server.ListenAndServe()
27 if err != nil {
28 t.Fatal(err)
29 }
30
31}
1time curl --request POST 'http://127.0.0.1:8080/ping' -v
2#抓包
3sudo tcpdump -i lo0 port 8080 -n
这个超时,是标志位。需要定时器判断是否超时,所以未必就是 3 秒,可能是 5 秒 等其他时间才会关闭 此请求。