http包中keepalive问题

[TOC]

开启keepalive

测试之前,需要把client作为全局变量,公用客户端

//定义客户端,然后关闭keepalive
var client = http.Client{
	Transport: &http.Transport{
		DisableKeepAlives: false, //当需要频繁发生请求的时候,需要把keepalive关闭掉。避免无限建立连接。
	},
}

// http 客户端
func httpclient() {
	url := "http://wechat.glodon.com"
	req, err := http.NewRequest("GET", url, nil) //创建一个请求,是一个get请求,Qurl,需要传入的参数是nil
	if err != nil {
		fmt.Println("newrequest err:", err)
	}
	// 定义get请求的header
	req.Header.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36")
	//获取respoes
	client.Do(req)
}

可以看到全部都是established状态,并且还在持续的增加

image-20190918191407510

image-20190918191604917

关闭keepalive

//定义客户端,然后关闭keepalive
var client = http.Client{
	Transport: &http.Transport{
		DisableKeepAlives: true, //当需要频繁发生请求的时候,需要把keepalive关闭掉。避免无限建立连接。
	},
}

// http 客户端
func httpclient() {
	url := "http://wechat.glodon.com"
	req, err := http.NewRequest("GET", url, nil) //创建一个请求,是一个get请求,Qurl,需要传入的参数是nil
	if err != nil {
		fmt.Println("newrequest err:", err)
	}
	// 定义get请求的header
	req.Header.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36")
	//获取respoes
	client.Do(req)
}

可以很直观的看到连接都是建立发送完消息,就立马关闭了。并且只有一个established状态的连接。

image-20190918191822544

image-20190918191906437

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: HTTP keepalive是一种应用层的机制,它允许在一个TCP连接上发送多个HTTP请求和响应,而不需要每次都建立新的连接。通过使用keepalive,可以减少连接的建立和关闭的开销,提高网络性能和响应速度。\[1\]在实际应用中,我们可以通过调整keepalive参数来控制等待下一个数据的时长。例如,Gunicorn的keepalive和Nginx的keepalive_timeout参数可以用来设置keepalive的超时时间。\[1\]在设置keepalive参数时,需要注意保持合适的设置,过短的超时时间会导致频繁建立连接,增加服务器的负载,而过长的超时时间则会导致系统中堆积大量无用的HTTP连接,消耗内存资源。因此,具体的设置需要根据网站的浏览量和服务器的配置进行调节。\[2\]如果需要频繁发送请求,可以考虑关闭keepalive,以避免无限建立连接。在Go语言中,可以通过设置http.Client的Transport属性中的DisableKeepAlives为true来关闭keepalive。\[3\] #### 引用[.reference_title] - *1* [傻傻分不清的TCP keepaliveHTTP keepalive](https://blog.csdn.net/zhipengfang/article/details/125713746)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [关于HTTP中的keep-alive](https://blog.csdn.net/weixin_44374938/article/details/117513571)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [http包中keepalive问题](https://blog.csdn.net/qq_34857250/article/details/101040858)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值