http长连接
http特点
- 简单快速
- 灵活
- 无连接 *
- 限制每次连接只处理一个请求
- 用完即断 (后期加入)
- 无状态 *
- 协议对于事务处理没有记忆能力
- 每个请求都是独立的
- 借助 Cookie Session 完成上下文联系
- 支持B/S(Browser/Server) 及C/S(Client/Serve)模式
Q 无连接的特性如何实现 长连接
网络协议分层简介
http 之 Keep-alive
上图我们可以知道http 基于 tcp 协议。虽然http本身是无连接的,不过tcp是协议是完全面向连接具有强可靠性。故可以通过复用tcp连接的方式实现所谓的http长连接
即HTTP长连接和短连接本质上是TCP长连接 和 短连接(握手说句话再见)
实验模型
基于 nginx 的 keepAlive 实验
该场景下有两个地方可以完成http长连接配置
针对10.10.7.179 < - > 10.9.71.78 进行分析
抓包分析
看包 说话
短连接 不复用
demo_no_keepalive_simple.cap
长连接 复用tcp连接
demo_keepalive_simple.cap
小节
nginx http长连接 配置
netstat -nat | grep -i “10.9.71.78:6601”
观察不同配置下tcp连接的不同变化
upstream module 中
location module 中
http module 中
按需配置
####性能对比
统一 nginx 单worker, server为简单的hello world服务
- 禁用长连接
- 启用http 长连接
性能差异 达到 70%+ (这个压测结果应该算是极限差距吧。按server耗时与传输占比来算)
适用场景
长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况
WEB网站的http服务一般都用短链接
选则法则:面向”用户多少”选择