小编袁树立*_*袁树立的帖子

错误:net/http:请求在等待连接时被取消(Client.Timeout exceeded while awaiting headers)

大约 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

7
推荐指数
1
解决办法
2万
查看次数

标签 统计

go ×1