GoFiber中ReadBufferSize设置异常:已修改仍提示缓冲区过小
解决Fiber Agent中ReadBufferSize设置不生效问题
问题描述
已在HostClient中设置ReadBufferSize为8192,控制台输出显示该值已生效,但发起请求后端点返回错误:
error when reading response headers: small read buffer. Increase ReadBufferSize. Buffer size=4096
问题原因
Fiber的Agent实例自身带有ReadBufferSize和WriteBufferSize字段,其优先级高于HostClient中的对应配置。仅设置HostClient的缓冲区大小,Agent仍会使用默认的4096字节缓冲区。
解决方案
同时设置Agent实例自身的缓冲区大小:
a := fiber.AcquireAgent() // 直接设置Agent的缓冲区大小 a.ReadBufferSize = 8192 a.WriteBufferSize = 8192 a.HostClient = &fasthttp.HostClient{ ReadBufferSize: 8192, WriteBufferSize: 8192, } fmt.Println("ReadBufferSize: ", a.ReadBufferSize) req := a.Request() req.Header.SetContentType("application/json") req.Header.SetMethod("POST") req.Header.Set("Authorization", key) req.SetRequestURI(uri) query := `{ "query": "{ users { name email phone id } }" }` req.SetBody([]byte(query)) _ = a.Parse() status, body, errs := a.Bytes() fmt.Println("Response Status Code:", status) fmt.Println("Response Body:", string(body)) fmt.Println("Errors: ", errs)
说明
通过直接设置Agent的ReadBufferSize,确保请求时使用指定的8192字节缓冲区,覆盖默认值,即可解决缓冲区过小的报错。
内容的提问来源于stack exchange,提问作者John Doe
相关产品推荐
相关产品推荐

