Http Keep-Alive 通俗地讲---就是所谓的持久连接
对于http这种大量的短连接的服务来说,开启持久连接的好处可以节省大量的TCP连接过程的开销,据apache的官方文档称对包含大量图片的HTML文档造成的延时起到50%的加速作用。而同时现有操作系统越来越先进,建立连接的开销越来越小,像 linux 2.6的epoll,freebsd的kqueue,可以让程序不产生新进程或新线程的情况就能同时服务N多连接。与此同时,客户端比如 IE,Firefox也可以同时开多个线程取内容,如果开了Keep alive,反而有可能使服务器端管理大量的等待超时的tcp连接,使服务器端资源耗尽,而导致响应速度变慢。
那么http的Keep-Alive到底是启用还是关闭呢?
说到Keep-Alive这个参数不得不说说这个参数在HTTP/1.0跟HTTP/1.1的一些区别,HTTP/1.0的默认情况下,是不会使用 Keep-Alive的,仅当客户端的头指定使用持久连接这个参数而且是要服务器预先知道传输内容的长度时才会与HTTP/1.0的客户端建立持久连接,这意味着那些长度不定的内容,诸如php等动态页面内容、SSI页面、以及服务器端生成的目录列表等内容一般来说将无法使用与HTTP/1.0客户端建立的持久连接。而对于HTTP/1.1的客户端来说,如果没有进行特殊指定,持久连接将是默认的连接方式。如果客户端请求的是未知长度的内容时将使用分块编码的方式进行传输,也就是大家在http头中看到的chunked。
由于http协议基于tcp协议,当然http协议也需要tcp的3次握手的过程,而对于一个完整的HTTP/1.0的请求和响应它有以下的一个请求过程
建立tcp连接 (syn; ack, syn2; ack2; 三个分组握手完成)
请求
响应
关闭连接 (fin; ack; fin2; ack2 四个分组关闭连接)
而对于一个完整的HTTP/1.1的请求和响应:
建立tcp连接 (syn; ack, syn2; ack2; 三个分组握手完成)
请求
响应
…
…
请求
响应
关闭连接 (fin; ack; fin2; ack2 四个分组关闭连接)
如果请求和响应都只有一个分组,那么HTTP/1.0至少要传输11个分组,才拿到一个分组的数据。而Keep-Alive可以更充分的利用这个已经建立的连接,避免的频繁的建立和关闭连接,减少网络拥塞。虽然Keep-Alive可以节约分组,提升响应速度,但是一旦超出某个平衡点,由于为了保持过多的连接,创建了太多的进程,导致系统不堪重负,系统响应变慢,而对于HTTP/1.0来说可以充分利用浏览器默认最大并发连接数比HTTP/1.1多的好处,实现不增加新域名的开销而更高的并行下载,减少域名解释的开销(注:IE 6,7在HTTP/1.0中默认最大并发连接数为4,在HTTP/1.1中默认最大并发连接数为2,IE8都为6,Firefox2在HTTP/1.0中默认最大并发连接数为2 在HTTP/1.1中默认最大并发连接数为8,firefox 3默认都是6)
根据10年7月Google索引的42亿个网页的统计报告,每张网页里包含29.39个图片,7.09个外部脚本,3.22个外部CSS 样式表,如果设置了Keep-Alive并且合理控制Keep-Alive TimeOut这个参数可以大量的节约连接的开销,提高相应速度。如果设置不好,在大并发的情况小,因维持大量连接而使服务器资源耗尽,而对于目前国内大部分的用户使用的还是IE6,7的情况下关闭Keep-Alive可以充分利用浏览器默认最大并发连接数的好处实现不增加额外的开销页面快速的展示。
来自http://blog.netzhou.net/?p=141
分享到:
相关推荐
标签“源码”提示我们可能会涉及到Keepalived的内部工作机制,理解`http_get`在源代码中的实现对于深入学习和定制可能有帮助。而“工具”则表明Keepalived是一个实用工具,用于在网络架构中实现服务的冗余和负载均衡...
本资源聚焦于“nginx+keepalived”这一高可用解决方案,旨在帮助学习者掌握如何利用这两个工具搭建稳定、可靠的Web服务架构。 **Nginx** Nginx是一款高性能的HTTP和反向代理服务器,同时也是一款邮件代理服务器。...
读者将学习如何定义和管理不同的VRRP实例,设置优先级和抢占模式,以及配置健康检查策略,如TCP、HTTP、ICMP等不同类型的检查。 此外,本书还会涉及Keepalived与其他开源项目的集成,如Nginx、LVS(Linux Virtual ...
总结而言,《keepalived权威指南》不仅深入讲解了Keepalived的核心组件和关键技术,还提供了丰富的实践案例,是学习和掌握Keepalived不可或缺的资源。无论是对于初学者还是有经验的网络工程师,阅读并理解这本书的...
### Keepalived权威指南知识点梳理 #### 一、VRRP简介 - **VRRP概念**:虚拟路由冗余协议(Virtual Router Redundancy Protocol, VRRP)是一...通过对Keepalived的学习和掌握,可以显著提高系统的可用性和用户体验。
这种环境通常涉及到Web架构,可能是基于Nginx、Apache或其它HTTP服务器,通过Keepalived来监控这些服务的状态,并在主服务器出现故障时自动将流量切换到备份服务器,从而确保服务的不间断运行。 "基于各种web架构...
【描述】这个压缩包包含的是关于如何在Linux环境中安装和配置nginx(一个高性能的HTTP和反向代理服务器)以及keepalived(一个用于网络服务高可用性的开源项目)的详细资料。通过这些资源,你可以学习到如何设置主从...
`Haproxy` 是一个高性能的TCP/HTTP负载均衡器,而`Keepalived` 提供了VRRP(Virtual Router Redundancy Protocol)协议来确保网络服务的高可用性。 `Haproxy` 的主要功能包括: 1. **负载均衡**:根据预设的策略,...
通过本文的介绍,我们不仅深入了解了Nginx与Keepalived的核心概念及其在高并发场景下的应用,还具体学习了如何通过这些工具构建一套完整的高可用、高并发网站部署方案。通过合理规划和细致操作,能够显著提升网站的...
【标题】"keepalived&tomcat;代码与脚本" 涉及的主要知识点包括keepalived、Redis、Tomcat以及Nginx这四个关键的IT组件,它们在构建高可用性和负载均衡的Web服务架构中起着至关重要的作用。 1. **Keepalived**: ...
通过学习和实践这份手册,读者将能够搭建一个稳定的、高效的FastDFS+nginx+keepalived集群,为业务提供可靠的服务支持。同时,该手册还提供了链接到博客的文章,可能包含更详细的步骤和实践经验,有助于读者深入理解...
在IT行业中,网络服务的高可用性和负载均衡是至关重要的,而`keepalived`与`nginx`的结合就是一种常见的实现方式。本篇将详细阐述`keepalived`和`...通过持续学习和实践,我们可以不断提升IT系统的稳定性和可靠性。
### 企业级Nginx负载均衡与Keepalived高可用实战 #### 一、Nginx负载均衡技术概述 在互联网环境下,随着访问量的不断增长,单一服务器往往难以满足需求,这时候就需要采用负载均衡技术来分担请求压力。Nginx作为一...
总之,"keepalived nginx 部署安装包"提供了搭建高可用web服务的基础,通过学习和掌握相关知识,可以提升服务器的稳定性和效率,降低单点故障的风险。在实际操作中,还需要根据具体的业务需求和服务器环境调整配置,...
### Keepalived安装与配置详解 #### 一、概述 Keepalived 是一款优秀的...通过本文档的学习,您应该已经掌握了 Keepalived 的安装、配置以及工作原理的基础知识。希望这些内容能帮助您更好地理解和使用 Keepalived。
在学习 Nginx 之前,需要对 HTTP 协议有一定了解,熟悉基础的 Linux 操作和网络知识。 **2. Nginx 服务器的安装部署** 2.1 Windows 环境安装 在 Windows 上,可以通过下载预编译的二进制包进行安装,配置文件通常...
通过本教程的学习,你将具备在企业环境中实施Keepalived高可用和Nginx负载均衡的技能,为你的运维工作提供强大支持。同时,这些知识也能帮助你更好地理解和设计复杂的服务架构,提高系统的稳定性和可扩展性。
在IT行业中,构建高可用和负载均衡的服务器架构是至关重要...通过深入学习和实践,你将能够根据具体需求调整和优化这个解决方案,以适应各种复杂的服务器环境。记得在生产环境中测试和验证配置,确保其稳定性和安全性。
Nginx是一款高性能的HTTP和反向代理服务器,而Keepalived则是一个网络服务保持工具,主要用于实现LVS(Linux Virtual Server)的健康检查和故障转移。 描述中提到的"keepalived-1.2.18.tar.gz"和"nginx-1.6.2.tar....
标题中的“利用ansible安装keepalived和haproxy集群”是指使用自动化运维工具Ansible来部署高可用性负载均衡解决方案,...通过这个实践,我们可以学习到如何利用自动化工具提升运维效率,确保服务的稳定性和可靠性。