Tomcat 是如何实现keep-alive

Tomcat作为Java程序的主要服务容器,通过NioEndpoint的SocketProcessor处理TCP的三次握手并保持连接,实现keep-alive功能。当处理器空闲时,会被缓存供后续请求复用,从而避免频繁的握手过程。然而,深入理解Tomcat的keep-alive实现远不止这些,相关技术细节值得进一步探讨。
摘要由CSDN通过智能技术生成

http无状态,又是基于tcp,所以每次请求都要握手分手,在频繁的请求来说,很是浪费,且没有必要。
于是就有了大家都知道的keep-alive。关于keep-alive的概念,网上一大堆,我就不重复了,盗一张图,描述一下:

keepAlive

keep-alive主要靠服务器实现,那么问题来了,作为java程序的主流服务容器,tomcat 是如何实现keep-alive的呢?

先看tomcat,以主流的nio实现为例

在NioEndpoint.SocketProcessor#doRun的方法中会处理三次握手:

                if (handshake == 0) {
                    log.info("开启三次握手验证");
                    SocketState state = SocketState.OPEN;
                    // Process the request from this socket
                    if (event == null) {
                        log.info("state = getHandler().process(socketWrapper, SocketEvent.OPEN_READ);");
                        state = getHandler().process(socketWrapper, SocketEvent.OPEN_READ);
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值