最近在研究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
三者的關系可以參考下圖: