我正在实现 fastcgi 应用程序,在阅读 fastCGI 规范后,我发现了一个名为“请求多路复用”的功能。它让我想起 Adobe RTMP 多路复用协议是专有且封闭的时代。
据我了解,多路复用可以减少创建与 FCGI 客户端的新连接的开销,有效地交织请求块,同时启用连接的“保持活动”模型。后者允许通过单个连接发送多个请求。
第一个问题是我做对了吗?
下一个是 - 经过一番谷歌搜索后,我发现没有实现 FCGI 多路复用的服务器,我首先对“流行”服务器感兴趣,我的意思是 nginx 和 lighttpd。我什至发现了一些关于弃用 FCGI 请求多路复用的讨论。
那么问题来了——有没有服务器支持这个功能呢?
问:多路复用可以减少创建与 FCGI 客户端的新连接的开销,有效地交织请求块
答:确实如此。但 keep-alive 也会减少新的连接。
Q:同时启用“keep-alive”模式进行连接
答:保活不需要多路复用。
问:后者允许通过单个连接发送多个请求
答:keep-alive 允许多个请求相互接连。多路复用允许并行多个请求。
没有广泛使用的支持 FastCGI 的 Web 服务器支持多路复用。但nginx支持FastCGI keep-alive。
FastCGI 多路复用通常不是一个好主意,因为 FastCGI 不支持流量控制。这意味着:如果 FastCGI 后端发送数据,但 http 客户端无法足够快地接收数据,则 Web 服务器必须保存所有这些数据,直到它们可以发送到客户端。
当不使用多路复用时,如果 http 客户端太慢,Web 服务器可能无法从 fastcgi 后端读取数据,从而有效地积压了 fastcgi 后端。使用多路复用时,Web 服务器需要从 fastcgi 后端读取所有数据,即使其中一个客户端接收数据的速度不够快。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)