关于 HTTP 长连接

本文探讨了HTTP长连接在性能优化中的作用,指出其能减少TCP连接的创建和销毁开销。内容涵盖了Dubbo默认的长连接设置,以及HTTP 1.1和2.0对长连接的支持。重点讨论了在Java中使用Apache HTTPClient实现长连接的配置,以及在NGINX中设置`keepalive_timeout`和`keepalive_requests`参数的重要性。同时,提到了Spring Boot 2.x中调整长连接配置的方法,并警告了在连接关闭后不检查有效性的潜在风险及应对策略。

使用长连接能够减少建立销毁连接的消耗,三次握手、四次挥手对性能影响是很大的。一般 RPC 如 Dubbo 默认都是长连接的,HTTP 1.1 之上也可以支持长连接了,HTTP 2.0 也支持了单一长连接的多路复用。

一般 HTTP 服务前面都会挂 nginx 做负载均衡,那么长连接的设置也分为从客户端到 nginx、从 nginx 到服务端两部分。

如果使用 Java 的 apache HTTPClient 可以通过设置 ConnectionKeepAliveStrategy 和协议为 HTTP1.1 来使用长连接,对于 4.2.x 版本设置方法如下所示:

    private static final ConnectionKeepAliveStrategy KEEP_ALIVE_STRATEGY = new ConnectionKeepAliveStrategy() {
   
   
        public long getKeepAliveDuration(HttpResponse response, HttpContext context) {
   
   
            HeaderElementIterator it = new BasicHeaderElementIterator(
                    response.headerIterator(HTTP.CONN_KEEP_ALIVE));
            while (it.hasNext()) {
   
   
                HeaderElement he = it.nextElement();
                String param = he.getName();
                String value =
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值