首页 > golang http.ResponseWriter Write()方法效率低的问题

golang http.ResponseWriter Write()方法效率低的问题

golang httpServer http.ResponseWriter 的 Write() 方法调用之后,服务器的QPS由原来的3万降到了7000。

代码如下:

func (s *ZService) writeResp(resp *ZMsg, w http.ResponseWriter) {
        ..............
        payload, err := ioutil.ReadAll(reader)//reader is a io.Reader
        if err == nil {
            w.Write(payload)//w.Write(make([]byte, 50))效果一样
        }else {
            log.Warningf("read stream failed, err[%v]", err)
        }
        .............
}

如果我的 http 响应不执行 w.Write(),即只有 http header,那么QPS能达到3万。求大牛帮忙分析分析。


这个个人觉得不一定是ResponseWriter写的慢, 或者说ResponseWriter慢可能有多种原因。golang的TCP相比于有JIT优化的语言来说,可能不是特别高,当然这个版本的go还是比较久远的,测试结果见bench mark ,但你有观测到客户端的load吗,有没有可能是客户端的load 比较大,然后影响了服务器的Request,这种测试,建议多部署一些客户端节点,保证客户端load正常,CPU和IO都不会是影响服务器回包的瓶颈,这样才好评测是否由于客户端的load问题阻塞了server的response.

另外,writeResp是一个routine吗


回复charliecui:客户端load比较大是什么意思?我是使用4台测试机同时进行测试的。

【热门文章】
【热门文章】