connectionTimeout参数是说当客户端与服务器连接以后,如果客户端不输入任何内容,那么超过了connectionTimeout设置的时间后连接会被断开 。?环境:springboot2.5.12
Application.yml配置
server:port: 8081Tomcat:maxThreads: 10maxConnections: 10acceptCount: 1connectionTimeout: 3000
测试1:在controller中休眠10s>connectionTimeout
@RestController@RequestMapping("/test")public class TestController {@GetMapping("/index")public Object index() {try {System.out.println(Thread.currentThread().getName()) ;TimeUnit.SECONDS.sleep(10) ;} catch (InterruptedException e) {e.printStackTrace();}return "success" ;}}
发现程序能正常地响应 。
结论:connectionTimeout参数与具体的请求响应时间是没有关系的 。
测试2:通过HttpURLConnection发送请求
public class HttpURLConnectionDemo {public static void mAIn(String[] args) throws Exception {HttpURLConnection con = (HttpURLConnection) new URL("http://localhost:8081/test/index").openConnection() ;con.setDoInput(true) ;con.setDoOutput(true) ;long start = System.currentTimeMillis() ;InputStream is = con.getInputStream() ;Scanner scan = new Scanner(is) ;while(scan.hasNext()) {System.out.println("接收到内容:" + scan.next() + "n耗时:" + (System.currentTimeMillis() - start)) ;}scan.close() ;con.disconnect() ;con = null ;}}
结果:
文章插图
图片
结论:connectionTimeout参数与什么样的客户端做连接请求没关系 。
测试3:通过Socket建立连接
public class TomcatConnectionTimeoutDemo {public static void main(String[] args) throws Exception {Socket socket = new Socket("127.0.0.1", 8081) ;long start = System.currentTimeMillis() ;InputStream is = socket.getInputStream() ;is.read() ;System.out.println(System.currentTimeMillis() - start ) ;}}
运行结果:文章插图
图片
差不多3s后程序结束了,也就是连接断开了 。接着测试:
public class TomcatConnectionTimeoutDemo {public static void main(String[] args) throws Exception {Socket socket = new Socket("127.0.0.1", 8081) ;long start = System.currentTimeMillis() ;final OutputStream os = socket.getOutputStream() ;new Thread(() -> {Scanner scan = new Scanner(System.in) ;while(scan.hasNext()) {String content = scan.next() ;System.out.println("准备发送:" + content) ;try {os.write(content.getBytes()) ;os.flush() ;} catch (IOException e) {e.printStackTrace() ;}}}).start() ;InputStream is = socket.getInputStream() ;is.read() ;System.out.println(System.currentTimeMillis() - start ) ;}}
结果1(什么也不做):文章插图
图片
结果2(控制台不停的输入内容):
文章插图
图片
【详解Tomcat配置参数connectionTimeout意义】程序一开始运行,控制台不停地输入内容,发现程序一直正常,当停留3秒后在输入内容,发现程序又断开了 。
结论:connectionTimeout参数是说当客户端与服务器连接以后,如果客户端不输入任何内容,那么超过了connectionTimeout设置的时间后连接会被断开 。
推荐阅读
- 详解 canal 同步 MySQL 增量数据到 ES
- Golang 中的 IO 包详解:常用的可导出函数详解
- 秋天野钓青鱼,4个爆护技巧详解,让你大鱼连竿上
- 详解API接口如何安全的传输数据
- 容器技术架构、网络和生态详解
- 什么是小跑铅钓法?小跑铅钓法详解
- 服务器Linux系统配置mysql数据库主从自动备份
- linux上SQL Server 配置管理器的使用
- Oracle数据库初始化参数解析:优化系统配置的终极指南!
- Redis干货 | 五种常用类型之Hash哈希存储类型详解