名称党-长/短连接
2015-07-12 01:03
274 查看
每次向服务发起请求,就建立一个连接,任务结束就中断连接,即短链接。假如通信结束后仍然保持连接,则为长连接。
对于用户频繁的请求服务,适用于建立长连接,但连接数最好进行限制,防止建立太多的连接拖累服务器。
从http/1.1开始,默认使用长连接,这样的优点是,单个网页的加载可能需要HTML文件和多个CSS或者JS,假如每获取一个静态文件都建立一次连接,那么就太浪费时间了,而在保持连接的情况下,继续GET即可。
长/短连接应当在TCP连接的范畴中来讨论。有人常说HTTP的短连接和长连接如何如何,但是HTTP只是一个应用层协议,又是无状态的,最终实质性的保持连接还是得靠传输层,即TCP。
Nginx作为代理的一种常见配置方式是在NginX与客户端之间使用长连接,NginX与后端应用服务器之间使用短连接。
对于长连接,可能需要定时发送数据包,或者触发机制,来维持长连接的状态。
在header头中设置请求长连接类型以及请求之后断开连接:
HTTP 请求header头中Connection声明为keep-alive告诉对方要长连接不立即断开,但是TCP的keep-alive则是一种检查对方是否仍旧和自己保持连接的机制以避免自作多情半开放的连接。
example-1
处理情况:一个 memcache 的连接 hash 值主要跟 host、port 以及 timeout 有关。有一个连接请求到来时就根据host 和 port 生成一个 hash 值,然后查表。有则取出,没有则新建一个连接,新建后放入连接池。请求关闭时并不关闭对 memcache server 的连接,而是把这个连接(在做一些状态更新后)放入连接池(就是前面提到的那个 hash 表),供下次查询使用。
创建persistent 为 false 时的表现是很好理解的,请求来了就连接。请求完毕就关闭对 memcache server 的连接。
example-2
MySQL数据库的连接默认属长连接,如果长期没有对数据库进行任何操作,在timeout值后,mysql server就会关闭此连接,而客户端在执行查询的时候就会得到一个类似于“MySQL server has gone away“这样的错误。
对于用户频繁的请求服务,适用于建立长连接,但连接数最好进行限制,防止建立太多的连接拖累服务器。
从http/1.1开始,默认使用长连接,这样的优点是,单个网页的加载可能需要HTML文件和多个CSS或者JS,假如每获取一个静态文件都建立一次连接,那么就太浪费时间了,而在保持连接的情况下,继续GET即可。
长/短连接应当在TCP连接的范畴中来讨论。有人常说HTTP的短连接和长连接如何如何,但是HTTP只是一个应用层协议,又是无状态的,最终实质性的保持连接还是得靠传输层,即TCP。
Nginx作为代理的一种常见配置方式是在NginX与客户端之间使用长连接,NginX与后端应用服务器之间使用短连接。
对于长连接,可能需要定时发送数据包,或者触发机制,来维持长连接的状态。
在header头中设置请求长连接类型以及请求之后断开连接:
Connection: keep-alive Connection: close
HTTP 请求header头中Connection声明为keep-alive告诉对方要长连接不立即断开,但是TCP的keep-alive则是一种检查对方是否仍旧和自己保持连接的机制以避免自作多情半开放的连接。
example-1
使用Memcache的ddServer方法,添加一个memcache服务到连接池。默认参数persistent = true ,使用长连接。
处理情况:一个 memcache 的连接 hash 值主要跟 host、port 以及 timeout 有关。有一个连接请求到来时就根据host 和 port 生成一个 hash 值,然后查表。有则取出,没有则新建一个连接,新建后放入连接池。请求关闭时并不关闭对 memcache server 的连接,而是把这个连接(在做一些状态更新后)放入连接池(就是前面提到的那个 hash 表),供下次查询使用。
persistent = false
创建persistent 为 false 时的表现是很好理解的,请求来了就连接。请求完毕就关闭对 memcache server 的连接。
example-2
MySQL数据库的连接默认属长连接,如果长期没有对数据库进行任何操作,在timeout值后,mysql server就会关闭此连接,而客户端在执行查询的时候就会得到一个类似于“MySQL server has gone away“这样的错误。
相关文章推荐
- PHP数据库长连接mysql_pconnect的细节
- 页面间隔半秒钟更新时间 Asp.net使用Comet开发http长连接示例分享
- PHP扩展模块memcached长连接使用方法分析
- java socket长连接中解决read阻塞的3个办法
- 蛋疼的移动cmnet tcp长连接
- socket长连接和短连接的区别
- 网页刷新技术理论知识简单总结
- 基于TCP的项目学习历程(二)mina框架的学习。会用就行。随后深究。。
- [转]利用Ajax实现长连接(模拟推送,半长连接)
- http和socket之长连接和短连接区别
- 谈谈长连接和NIO
- TCP socket 长连接
- Web 通信 之 长连接、长轮询(long polling)
- Web 通信 之 长连接、长轮询(long polling)
- Http 和TCP的关系,TCP长连接和短连接有什么区别?
- JAVA网络编程Socket常见问题 【长连接专题】
- tcp短连接TIME_WAIT问题解决方法大全(1)——高屋建瓴
- tcp短连接TIME_WAIT问题解决方法大全(2)——SO_LINGER
- php使用长连接
- http 长连接和短连接介绍