IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Golang默认Http Client导致的cannot assign requested address错误

    流动发表于 2025-04-29 20:20:29
    love 0

    问题表现

    重现代码:

    package main
    
    import (
    	"fmt"
    	"io"
    	"net/http"
    	"time"
    )
    
    func main() {
    
    	client := &http.Client{
    		Timeout: time.Duration(3) * time.Second,
    	}
    
    	for i := 0; i < 100; i++ {
    		go func() {
    			for {
    				req, _ := http.NewRequest(http.MethodGet, "https://baidu.com", nil)
    
    				rsp, err := client.Do(req)
    				if err != nil {
    					fmt.Println("request failed", err)
    					continue
    				}
    
    				rsp.Body.Close()
    
    				body, err := io.ReadAll(rsp.Body)
    				if err != nil {
    					fmt.Println("read body failed", err)
    					continue
    				}
    
    				fmt.Println(string(body))
    			}
    		}()
    	}
    
    	select {}
    }
    

    启动后,随着请求越来越多,很快就出现了"cannot assign requested address"错误,服务器出现大量TIME_WAIT连接。



沪ICP备19023445号-2号
友情链接