当前位置: 首页 > news >正文

中国企业信息网官方网站方案 网站

中国企业信息网官方网站,方案 网站,如何建设本地网站,互联网工作工资高吗上文中我的结论是#xff1a; HTTP Keep-Alive 是在应用层对TCP连接进行滑动续约复用#xff0c; 如果客户端/服务器稳定续约#xff0c;就成了名副其实的长连接。目前所有的Http网络库都默认开启了HTTP Keep-Alive#xff0c;今天我们从底层TCP连接和排障角度撕碎HTTP持久… 上文中我的结论是  HTTP Keep-Alive 是在应用层对TCP连接进行滑动续约复用 如果客户端/服务器稳定续约就成了名副其实的长连接。目前所有的Http网络库都默认开启了HTTP Keep-Alive今天我们从底层TCP连接和排障角度撕碎HTTP持久连接。“我只是一个写web程序的猿我为什么要知道这么多”。使用go语言倒腾一个httpServer/httpClient粗略聊一聊go的使用风格。使用go语言net/http包快速搭建httpserver注入用于记录请求日志的Handlerpackage mainimport (fmtlognet/http )// IndexHandler记录请求的基本信息 请关注r.RemoteAddr func Index(w http.ResponseWriter, r *http.Request) {fmt.Println(receive a request from:, r.RemoteAddr, r.Header)w.Write([]byte(ok)) }// net/http 默认开启持久连接 func main() { fmt.Printf(Starting server at port 8081\n)if err : http.ListenAndServe(:8081, http.HandlerFunc(Index)); err ! nil {log.Fatal(err)} }ListenAndServe创建了默认的httpServer服务器go通过首字母大小写来控制访问权限如果首字母大写则可以被外部包访问 类比C#全局函数、静态函数。func ListenAndServe(addr string, handler Handler) error {server : Server{Addr: addr, Handler: handler}return server.ListenAndServe() }net/http服务器默认开启了Keep-Alive, 由Server的私有变量disableKeepAlives体现。type  Server  struct {...disableKeepAlives int32     // accessed atomically. ... }使用者也可以手动关闭Keep-Alive SetKeepAlivesEnabled()会修改私有变量disableKeepAlives的值s : http.Server{Addr:           :8081,Handler: http.HandlerFunc(Index),ReadTimeout:    10 * time.Second,WriteTimeout:   10 * time.Second,MaxHeaderBytes: 1  20,}s.SetKeepAlivesEnabled(true)if err : s.ListenAndServe(); err ! nil {log.Fatal(err)}以上也是go语言包的基本制作/使用风格。请注意我在httpserver插入了IndexHander记录httpclient的基本信息。这里有个知识点如果httpclient建立新的TCP连接系统会按照一定规则给你分配随机端口。启动服务器程序浏览器访问localhost:8081服务器会收到如下日志, 图中红圈处表明浏览器使用了系统随机的固定端口建立tcp连接。使用net/http编写客户端间隔1s向服务器发起HTTP请求package mainimport (fmtio/ioutillognet/httptime )func main() {client : http.Client{Timeout: 10 * time.Second,}for {requestWithClose(client)time.Sleep(time.Second * 1)} }func requestWithClose(client *http.Client) {resp, err : client.Get(http://127.0.0.1:8081)if err ! nil {fmt.Printf(error occurred while fetching page, error: %s, err.Error())return}defer resp.Body.Close()c, err : ioutil.ReadAll(resp.Body)if err ! nil {log.Fatalf(Couldnt parse response body. %v, err)}fmt.Println(string(c)) }服务器收到的请求日志如下图中红框显示httpclient使用固定端口61799发起了http请求客户端/服务器维持了HTTP Keep-alive。使用netstat -an | grep 127.0.0.1:8081可围观系统针对特定ip的TCP连接客户端系统中针对 服务端也只建立了一个tcp连接tcp连接的端口是61799与上文呼应。使用Wireshark查看localhost网卡发生的tcp连接可以看到每次http请求/响应之前均没有tcp三次握手tcp每次发包后对端需要回ACK确认包反面教材-高能预警go的net/http明确提出:If the Body is not both read to EOF and closed, the Clients underlying RoundTripper (typically Transport) may not be able to re-use a persistent TCP connection to the server for a subsequent keep-alive request.也就是说httpclient客户端在每次请求结束后如果不读完body或者没有关闭body 可能会导致Keep-alive失效也会导致goroutine泄露。//  下面的代码没有读完body,导致Keep-alive失效 func requestWithClose(client *http.Client) {resp, err : client.Get(http://127.0.0.1:8081)if err ! nil {fmt.Printf(error occurred while fetching page, error: %s, err.Error())return}defer resp.Body.Close()//_, err  ioutil.ReadAll(resp.Body)fmt.Println(ok) }此次服务端日志如下上图红框显示客户端持续使用新的随机端口建立了TCP连接。查看客户端系统建立的tcp连接Wireshark抓包结果图中红框显示每次HTTP请求/响应 前后均发生了三次握手、四次挥手。全文梳理目前已知的httpclient、httpServer均默认开启keep-alive禁用keep-alive或者keep-alive失效会导致特定场景客户端频繁建立tcp连接 可通过 netstat -an | grep {ip} 查看客户机上建立的tcp连接Wireshark抓包 明确keep-alive和非Keep-alive的抓包效果●HTTP1.1 Keep-Alive到底算不算长连接●宝藏好物gRPCurl●SignalR 开发到生产部署闭坑指南●SignalR在React/Go技术栈的实践●我是状态机 一颗永远骚动的机器引擎●大揭秘| 我司项目组Gitlab Flow DevOps流程●你怕是对MD5算法有误解点个在看你最好看仅代表此刻认知文章永久更新地址请移步原文
http://www.zqtcl.cn/news/785415/

相关文章:

  • 做修图网站电脑配置wordpress后台登录页面美化
  • 中国十大物联网公司广州网站快速排名优化
  • 发帖网站有哪些wordpress提请审批
  • 网页设计网站导航怎么弄红色字体的内蒙古住房与建设厅网站
  • 微信网站什么做百度官网认证
  • 怎么提升网站流量做五金建材市场的网站
  • 网站合作流程h5网站怎么做api对接
  • asp.net 网站 结构手机客户端网站建设
  • 图片网站怎么做SEO参与网站建设注意
  • 网站界面设计案例教程wordpress更新报错
  • Dw做网站怎么加logo如何申请小程序店铺
  • 官方网站下载官方版本wordpress文字可以动的插件
  • 企业网站模板 免费下载网站建设服务采购方案模板下载
  • 在万网申请的域名_需要把万网的账户密码给做网站的吗做鱫视频网站
  • 网站建设360wordpress 音乐下载主题
  • 站群推广wordpress换logo
  • 苏州网站建设丶好先生科技电脑怎样做幻灯片的网站
  • 什么网站可以做线上邀请函大米网络营销推广方案
  • .net做网站实例 贴吧软件开发前景和发展
  • 合肥快速建站模板软件开发文档编制
  • 深圳免费网站设计平板做网站服务器
  • 注册或者浏览社交类网站时不恰当威宁做网站
  • 国外的电商网站有哪些方面沈阳医疗网站制作
  • 那个企业网站是用vue做的网站频道运营怎么做
  • 英语培训学校网站怎么做网站建建设公司和网络自建
  • 无法访问iis网站网站吸引客户
  • 郑州企业网站排名优化wordpress指定文章
  • 南京 网站开发宿州网站建设工作室
  • 龙海市城乡规划建设局网站河南郑州哪里可以做公司网站
  • 网站正能量晚上不用下载进入免费成都网站制作方案