Go语言 http.Transport -> WriteBufferSize & ReadBufferSize不适用于http 2

rfbsl7qr  于 2023-08-01  发布在  Go
关注(0)|答案(1)|浏览(120)

我试图增加我的http 2客户端的写缓冲区,但它不起作用。
我将其设置如下(在客户端):

httpTransport := &http.Transport {
       WriteBufferSize: 83000000,
       ReadBufferSize: 83000000,
   }
   http2Transport, err := http2.ConfigureTransports(httpTransport)
   if err != nil {
       return nil, fmt.Errorf("Failed to ConfigureTransports, %v", err)
   }

   http2Transport.AllowHTTP = true // So http2.Transport doesn't complain the URL scheme isn't 'https'
   http2Transport.TLSClientConfig = tlsCfg
   http2Transport.DialTLS = dialTls

   conn = &Client{
                   Client: &http.Client{
                       Transport: http2Transport,
                       Timeout: timeout,
                   },
                 }

字符串
我正在使用'http2.Transport'(由http2.ConfigureTransports返回)来使用http 2协议。
但是,在此更改后,连接未出现,出现以下错误:http 2:没有可用的缓存连接
如果我做错了什么,或需要任何其他信息(以更好地理解问题/情况),请提出建议。我想增加HTTP 2客户端的传出缓冲区。
完整问题报告如下:https://github.com/golang/go/issues/61545
我尝试了上面提到的,我希望http 2客户端的传出缓冲区得到增加(以提高吞吐量),但随着WriteBufferSize和ReadBufferSize的变化,甚至连连接都没有出现。请建议一个样本的工作代码,以增加输出缓冲区的http 2客户端。

xwbd5t1u

xwbd5t1u1#

错误消息表明HTTP/2传输中没有可用的缓存连接,这可能是由于您将http2Transport.AllowHTTP字段设置为true。当AllowHTTP设置为true时,HTTP/2传输允许使用基于明文(HTTP)的HTTP/2,而不是加密(HTTPS)。但是,HTTP/2连接共享(缓存)需要HTTPS,启用AllowHTTP可能会导致缓存的连接无法工作。
要修复此问题,可以将AllowHTTP设置为false,以确保仅使用HTTPS连接

相关问题