最近在研究tomcat的连接超时问题,环境:jdk1.8 + springboot 2.1.1.RELEASE,以下仅为个人理解,如果异议,欢迎指正。
springboot的tomcat的几个配置参数:
server: port: 8085 servlet: context-path: /test tomcat: max-threads: 1 #最大线程数,默认200 accept-count: 1 #挂起的最大连接数,默认100,最终会体现在这里 public abstract ServerSocketChannel bind(SocketAddress local, int backlog) throws IOException; socket.listen(backlog),也就是server在不能执行accept()之前,能监听的client的最大数量 max-connections: 1 #最大连接数,默认10000,tomcat内tcp连接池的大小 connection-timeout: 1 #server端的socket超时间,默认60s, client端设置keepAlive或者server端tcp状态为CLOSE_WAIT(比如client先close),server端判断client端没有读写并且超时时会close掉当前的socket
三者的关系可以参考下图: