Tomcat 是如何实现keep-alive
http无状态,又是基于tcp,所以每次请求都要握手分手,在频繁的请求来说,很是浪费,且没有必要。 于是就有了大家都知道的keep-alive。关于keep-alive的概念,网上一大堆,我就不重复了,盗一张图,描述一下: 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); } else { log.info("state = getHandler().process