大约 3~4 分钟,我的日志中会发生一些错误。
net/http:请求在等待连接时被取消(Client.Timeout 在等待标头时超出)
我尝试使用 httptrace 找出需要时间的地方。httptrace.GetConn httptrace.GotConn
我认为它在 httptrace.GotConn 之前用完了。所以在等待连接时发生错误请求被取消
我的机器没问题,这是我的 netstat。
LAST_ACK 2 CLOSE_WAIT 7 ESTABLISHED 108 SYN_SENT 3 TIME_WAIT 43
package main
import (
"crypto/md5"
"encoding/hex"
"fmt"
"io/ioutil"
"math/rand"
"net"
"net/http"
"net/http/httptrace"
"os"
"sync"
"time"
)
var Client *http.Client = &http.Client{
Transport: &http.Transport{
DisableKeepAlives:true,
Proxy: http.ProxyFromEnvironment,
DialContext: (&net.Dialer{
Timeout: 3 * time.Second, // ????
KeepAlive: 10 * time.Second,
DualStack: true,
}).DialContext,
IdleConnTimeout: 120 * time.Second,
ResponseHeaderTimeout: 60 * time.Second,
ExpectContinueTimeout: 1 * time.Second,
},
Timeout: 500 …Run Code Online (Sandbox Code Playgroud) go ×1