Go语言http库的TCP重用问题

uniqueraincat · · 4933 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

问题描述:Go客户端通过http方式访问服务器,并发访问时出现大量TIME_WAIT的TCP连接 过程:已经尝试过各种修改,最后确定测试Go语言的http标准库,包括自定义transport等方法,仍然无法解决问题,还请大神赐教。(不想修改内核参数) 测试代码如下,最简单的方式了: // adtestNew project adtestNew.go package main import ( "io" "io/ioutil" "net/http" "time" ) var client *http.Client func main() { //client = http.DefaultClient tr := &http.Transport{ DisableKeepAlives: false, MaxIdleConnsPerHost: 40, } client = &http.Client{Transport: tr} timer1 := time.NewTicker(time.Second * 10) <-timer1.C for { go dotest() go dotest() go dotest() go dotest() time.Sleep(time.Millisecond * 500) } } func dotest() { url := "http://www.baidu.com" res, _ := http.Get(url) io.Copy(ioutil.Discard, res.Body) res.Body.Close() }

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

4933 次点击  
加入收藏 微博
7 回复  |  直到 2015-11-26 21:54:00
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传