douchu5131 2015-11-02 13:45
浏览 48

golang中服务器与客户端传输之间的关系

I have both - a client and a server in a one program. With a function func Get(url string) ([]byte, error) i make tons of requests to other server and my server handles one per second request from other clients. The function for request is:

var transport = &http.Transport{}
func Get(url string) ([]byte, error) {
    req, err := http.NewRequest("GET", url, nil)
    if err != nil {
        return nil, err
    }

    var client = &http.Client{
        Transport: transport,
        Timeout:   15 * time.Second,
    }

    resp, err := client.Do(req)
    if resp != nil && resp.Body != nil {
        defer resp.Body.Close()
    }

    if err != nil {
        if resp != nil && resp.Body != nil {
            io.Copy(ioutil.Discard, resp.Body)
        }

        return nil, err
    }

    data, err := ioutil.ReadAll(resp.Body)
    return data, err
}

and the server is:

func homePage(w http.ResponseWriter, r *http.Request) {
    fmt.Fprint(w, "Hello")
}

http.HandleFunc("/", homePage)
http.ListenAndServe(":9002", nil)

So, the question is - why my server start waiting, while my clients send all their requests to other server, before it start handling other client's request? What do i miss? CPU is ok, memory is ok, bandwidth is ok.

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥20 测距传感器数据手册i2c
    • ¥15 RPA正常跑,cmd输入cookies跑不出来
    • ¥15 求帮我调试一下freefem代码
    • ¥15 matlab代码解决,怎么运行
    • ¥15 R语言Rstudio突然无法启动
    • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
    • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
    • ¥15 用windows做服务的同志有吗
    • ¥60 求一个简单的网页(标签-安全|关键词-上传)
    • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法