参数说明 :

 1 .
SocketTimeout              
// 响应超时时间,超过此时间不再读取响应

 2 .
ConnectTimeout    //
链接建立的超时时间

 3 . ConnectionRequestTimeout //
HttpClient中,从Connetcion Pool中获得一个Connection的超时时间


TCP Keep-Alive :

 1 .
链接建立之后,如果应用程序或者上层协议一直不发送数据,或者隔很长时间才发送一次数据,

  当链接很久没有数据报文传输时如何去确定对方还在线,到底是掉线了还是确实没有数据传输,

链接还需不需要保持,这种情况在TCP协议设计中是需要考虑到的。

2 . TCP协议通过一种巧妙的方式去解决这个问题,当超过一段时间之后,

  TCP自动发送一个数据为空的报文给对方,如果对方回应了这个报文,

说明对方还在线,链接可以继续保持,如果对方没有报文返回,

并且重试了多次之后则认为链接丢失,没有必要保持链接。

Http Keep-Alive :

 1 .
一个完整的HTTP事务,有链接的建立,请求的发送,响应接收,断开链接这四个过程,

  早期通过HTTP协议传输的数据以文本为主,一个请求可能就把所有要返回的数据取到,

但是,现在要展现一张完整的页面需要很多个请求才能完成,如图片,JS,CSS等,

如果每一个HTTP请求都需要新建并断开一个TCP,这个开销是完全没有必要的。

2 . 开启HTTP
Keep-Alive之后,能复用已有的TCP链接,当前一个请求已经响应完毕,

  服务器端没有立即关闭TCP链接,而是等待一段时间接收浏览器端可能发送过来的第二个请求,

通常浏览器在第一个请求返回之后会立即发送第二个请求,如果某一时刻只能有一个链接,

同一个TCP链接处理的请求越多,开启Keep-Alive能节省的TCP建立和关闭的消耗就越多。

3 .
使用Keep-Alive可以改善这种状态,即在一次TCP连接中可以持续发送多份数据而不会断开连接。

    
通过使用Keep-Alive机制,可以减少tcp连接建立次数,也意味着可以减少TIME_WAIT状态连接,

  以此提高性能和提高httpd服务器的吞吐率(更少的TCP连接意味着更少的系统内核调用,Socket的accept()和close()调用)。

4 .
但是,Keep-Alive并不是免费的午餐,长时间的TCP连接容易导致系统资源无效占用。

  配置不当的Keep-Alive,有时比重复利用连接带来的损失还更大。

5 .
如果要在HTTP1.0中支持Keep-Alive,必须明确的在header中加入Connection:keep-alive。

<1>
Client发起一个包含Connection:keep-alive的请求。

   <2>
Server收到请求后,如果server支持keepalive,回复一个包含Connection:keep-alive的响应,

不关闭连接,否则回复一个包含Connection:close的响应,关闭连接。

<3>
如果client收到包含Connection:keep-alive的响应,向同一个连接发送下一个请求,直到一方主动关闭连接。

KeepAlive随笔的更多相关文章

  1. Redis集群服务器-高可用调研随笔[转]

    今天改了一天的Bug,本想下午开始专研Redis命令集,结果也泡汤了.只能在下班的路上考虑下Redis集群服务器的高可用方案.随笔而已,尚未成型,仅作记录. 当然,我说的可能比较片面,欢迎拍砖.斧正. ...

  2. 随笔——python截取http请求报文响应头

    随笔——python截取http请求报文响应头 标签: pythonhttp响应头 2014-05-29 09:32 2114人阅读 评论(0) 收藏 举报  分类: 随笔(7)  版权声明:本文为博 ...

  3. AI人工智能系列随笔

    初探 AI人工智能系列随笔:syntaxnet 初探(1)

  4. 【置顶】CoreCLR系列随笔

    CoreCLR配置系列 在Windows上编译和调试CoreCLR GC探索系列 C++随笔:.NET CoreCLR之GC探索(1) C++随笔:.NET CoreCLR之GC探索(2) C++随笔 ...

  5. C++随笔:.NET CoreCLR之GC探索(4)

    今天继续来 带大家讲解CoreCLR之GC,首先我们继续看这个GCSample,这篇文章是上一篇文章的继续,如果有不清楚的,还请翻到我写的上一篇随笔.下面我们继续: // Initialize fre ...

  6. C++随笔:从Hello World 探秘CoreCLR的内部(1)

    紧接着上次的问题,上次的问题其实很简单,就是HelloWorld.exe运行失败,而本文的目的,就是成功调试HelloWorld这个控制台应用程序. 通过我的寻找,其实是一个名为TryRun的文件出了 ...

  7. keepalive的不足,如何处理

    MySQL(或者其它服务)的keepalived高可用监控脚本 开发脚本需求:我们知道,keepalive是基于虚拟ip的存活来判断是否抢占master的机制的,但是如果我们做了MySQL的keepa ...

  8. ASP.NET MVC 系列随笔汇总[未完待续……]

    ASP.NET MVC 系列随笔汇总[未完待续……] 为了方便大家浏览所以整理一下,有的系列篇幅中不是很全面以后会慢慢的补全的. 学前篇之: ASP.NET MVC学前篇之扩展方法.链式编程 ASP. ...

  9. 使用Beautiful Soup编写一个爬虫 系列随笔汇总

    这几篇博文只是为了记录学习Beautiful Soup的过程,不仅方便自己以后查看,也许能帮到同样在学习这个技术的朋友.通过学习Beautiful Soup基础知识 完成了一个简单的爬虫服务:从all ...

随机推荐

  1. ubuntu 12.04 x86_64:java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons

    sy@sy-Aspire-:~$ .0_155965261/configuration/.log !SESSION -- ::39.595 ------------------------------ ...

  2. 实现高效的GPRS驱动程序

    1. 引言 用过几款GPRS模块,也从淘宝上买过多个GPRS模块,一般的都会送一个驱动程序和使用demo,但是代码质量都较低. 回头看了下几年前使用的GPRS代码,从今天的角度来看,也就是买模块赠送一 ...

  3. 浅谈访问控制列表(ACL)

    1.ACL简介2.前期准备3.ACL的基本操作:添加和修改4.ACL的其他功能:删除和覆盖5.目录的默认ACL6.备份和恢复ACL7.结束语 1.ACL简介 用户权限管理始终是Linux系统管理中最重 ...

  4. 使用Entity Framework时遇到的问题

    1.运行程序时提示 ,vension does not match. 差不多是这样一个提示,具体怎么样的给忘记了. #1remove 'entity framework' from reference ...

  5. java复习(1)---java与C++区别

    [系列说明]java复习系列适宜有过java学习或C++基础或了解java初步知识的人阅读,目的是为了帮助学习过java但是好久没用已经遗忘了的童鞋快速捡起来.或者教给想快速学习java的童鞋如何应用 ...

  6. FOJ 11月月赛题解

    抽空在vjudge上做了这套题.剩下FZU 2208数论题不会. FZU 2205 这是个想法题,每次可以在上一次基础上加上边数/2的新边. #include <iostream> #in ...

  7. hadoop环境搭建之关于NAT模式静态IP的设置 ---VMware12+CentOs7

    很久没有更新了,主要是没有时间,今天挤出时间验证了一下,果然还是有些问题的,不过已经解决了,就发上来吧. PS:小豆腐看仔细了哦~ 关于hadoop环境搭建,从单机模式,到伪分布式,再到完全分布式,我 ...

  8. .NET枚举类型转为List类型

    如图所示这个竞卖状态,原先是在前端界面通过html代码写死的几个状态,现在需要改为动态加载.这个几个状态是定义的枚举类型. 1:定义一个枚举类型 /// <summary>    /// ...

  9. jquery easyui的datagrid在初始化的时候会请求两次URL?

    我们项目前端用的是jquery easyui,刚开始使用datagrid加载列表初始化时总是请求两次URL,这让人非常不解,怎么总是请求两次呢?数据一多,加载速度明显变慢,通过查资料才知道原来是重复声 ...

  10. [ext4]空间管理 - 查找块

     在文件系统中,当需要执行写操作时,肯定是需要查找需要写入的块.那么如何查找块哪? 在Ext4系统中,有两个函数是可能执行查找操作的:ext4_getblk().ext4_get_block(). ...