为什么要了解 go 底层

go服务出现了 502状态码

nginx 代理到 go 服务

    1. http 服务没启动
    1. 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 秒 等其他时间才会关闭 此请求。

谁阻塞了go协程