设为首页收藏本站

ZMX - IT技术交流论坛 - 无限Perfect,追求梦想 - itzmx.com

 找回密码
 注册论坛

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

用百度帐号登录

只需两步,快速登录

搜索
查看: 558|回复: 0

Linux 服务器应用服务端源代码优化性能,connection: close协议HTTP/1.1与1.0正确关闭长连接的方式,curl来测试TIME_WAIT状态和CLOSING的区别

[复制链接]
 成长值: 336

签到天数: 4737 天

[LV.Master]伴坛终老

发表于 2024/8/26 01:46 | 显示全部楼层 |阅读模式 |Google Chrome 128.0.0.0|Windows 10
天涯海角搜一下: 百度 谷歌 360 搜狗 有道 雅虎 必应 即刻
Linux 服务器应用服务端源代码优化性能,connection: close协议HTTP/1.1与1.0正确关闭长连接的方式,curl来测试TIME_WAIT状态和CLOSING的区别

这两个命令可以用来观察服务器的状况与测试
3.jpg
  1. netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
复制代码
  1. netstat -n | grep ip地址
复制代码


测试方法很简单,可以用curl,curl默认发起协议为HTTP/1.1
  1. curl -v "http://ip地址"
复制代码


HTTP/1.1并且作为客户端发送connection: close头给服务端,通知服务器立即关闭连接
  1. curl -v -H "connection: close" "http://ip地址"
复制代码


如果测试HTTP/1.0,就加个参数强制使用1.0
  1. curl -v --http1.0 "http://ip地址"
复制代码


HTTP/1.0
应当是始终默认自动关闭长连接的,查询会立即进入TIME_WAIT状态就是成功了

HTTP/1.1
1.1收到客户端发起connection: close头,虽然没看到CLOSING,但是会进入TIME_WAIT状态(此时已经算关闭成功了),并且回应一个头connection: close给客户端,这个头可以不用回复,浪费传输流量,1.0下也会回这个头都没必要的,因为客户端都主动发起了关闭连接,自然会发送完成关闭,不会在等待收到头才关闭了
一些特定场景下需要永久短链接,不然容易1.1因为客户端已经强制关闭了连接,但是客户端没有发connection: close,会导致服务端依旧处于长连接引起大量的FIN_WAIT1


目前暂时不知道Linux中的CLOSING状态是什么用途,关闭长连接主要是TIME_WAIT,只要进入TIME_WAIT就是代表连接已关闭

协议文档
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Connection

欢迎光临IT技术交流论坛:http://bbs.itzmx.com/
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册论坛 新浪微博账号登陆用百度帐号登录

本版积分规则

手机版|Archiver|Mail me|网站地图|IT技术交流论坛 ( 闽ICP备13013206号-7 )

GMT+8, 2024/12/23 08:23 , Processed in 0.106668 second(s), 23 queries , MemCache On.

Powered by itzmx! X3.4

© 2011- sakura

快速回复 返回顶部 返回列表