共计 775 个字符,预计需要花费 2 分钟才能阅读完成。
一、长连接介绍
面临问题:
http 是一个面向连接的协议,用户完成一次请求需要以下步骤
三次握手
发起请求
响应请求
四次断开
N 个请求就重复 N 次,如果希望用户能够更快的拿到数据,服务器的压力降到最低,让你去优化这个请求过程。
解决方案:
答案很明确,那就是建设每次执行的三次握手和四次断开,最好是一次三次握手建立成功后,在这个数据通道完成所有的请求后,然后在四次断开,这就是优化思路–理想中应该是这样。
三次握手
发起请求
响应请求
发起请求
响应请求
。。。。。
请求全部完成后,四次断开
优化目的:
减少了三次握手和四次断开的次数。
注意事项:
长连接需要服务器和客户端浏览器都支持
长连接特点:
提升用户访问速度
降低服务器压力
大量空闲长连接可能造成服务器压力过大
二、长连接实现
apache2.4 默认开启了长连接,长连接时间为 5s,修改子配置文件 httpd-default.conf 可以定义该选项
# 开启长连接功能 On 为开启 Off 为关闭
KeepAlive On
# 当 keepalive 打开时,maxkeepaliverequests 指令限制每个连接允许的请求数。如果设置为 0,则允许无限请求。我们建议将此设置保持为高值以获得最大服务器性能。不建议大家将这个数值设置为 0,防止内存溢出。
MaxKeepAliveRequests 100
长连接时间,默认单位是秒,也可以使用 ms 只需在数值后面添加单位就行了。这个值如果你服务器速度快,网络稳定,建议设置小一点,比如 3s,因为目前单个请求都是毫秒级的。避免大量空闲长连接消耗你的系统资源。
KeepAliveTimeout 5
实验总结:
一次用户访问的长连接数根据用户浏览器的不同建立的数量不同,比如 chrome, 每次会同时建立 5 个长连接,也就是五个数据通道,然后完成数据请求,所以大家都反应 chrome 浏览器好用,其他浏览器要看情况,不同浏览器的连接数不同。