繁体   English   中英

与HTTP的TCP持久连接?

[英]TCP Persistent Connections with HTTP?

所以我认为,使用HTTP 1.1时,只要您正在与该服务器进行通信,TCP连接就会持续存在? 完成写入套接字后,它如何实际工作,如何知道TCP连接? 任何形式都会很棒,我已经做过研究,但是如果没有阅读RFC,我找不到我想要的东西。

请参阅RFC 2616的8.1节 基本上,HTTP 1.1将所有连接视为持久连接,但是RFC的语言并没有强制要求这种行为,因为它使用了“ SHOULD”一词。 如果被授权,它将使用“必须”。

但是,RFC没有详细说明实现方式。 Wikipedia上HTTP Persistent Connection页面可以看出,Apache的默认超时(超过此超时将返回持久连接以用于其他用途)可能只有5秒。 (尽管考虑到Apache提供的所有其他旋钮和转盘,这几乎可以肯定是可配置的)。

换句话说,这意味着在短时间内向同一个地址发送大量请求,以免浪费时间打开和关闭一堆将要执行的会话。 增加此超时不是“随意的”,因为在连接保持打开状态时资源被占用。 在您期望有大量传入客户的环境中,占用这些资源可能会对性能造成致命影响。

典型的实现是HTTP服务器将有一个超时(通常称为KeepAliveTimeout此类 ),之后它将关闭空闲连接。

如果服务器为每个连接保留线程或整个进程(例如,使用通常的mpm_prefork或mpm_worker的apache),则keepalive通常会被完全禁用或保持很短的时间(几秒钟)。 对于基于事件的服务器(例如nginx),每个连接使用更少的内存,可以将keepalive超时设置为更高的值(通常为一分钟左右)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM