面试题:SpringBoot 默认同时可以处理的最大连接数是多少?

在 Spring Boot 中,默认的最大连接数取决于你使用的内嵌服务器(如 Tomcat、Jetty 或 Undertow)。Spring Boot 默认使用 Tomcat 作为内嵌服务器,因此最大连接数的配置与 Tomcat 相关。


1. Tomcat 的默认最大连接数

Tomcat 的默认最大连接数是 100。这意味着,默认情况下,Tomcat 可以同时处理 100 个请求。如果并发请求数超过 100,新的请求将会被阻塞,直到有连接被释放。


2. 如何修改最大连接数

你可以通过配置文件(如 application.propertiesapplication.yml)来修改 Tomcat 的最大连接数。

2.1 application.properties 中配置

server.tomcat.max-connections=200  # 最大连接数
server.tomcat.max-threads=150      # 最大线程数
server.tomcat.accept-count=100     # 等待队列的最大长度

2.2 application.yml 中配置

server:
  tomcat:
    max-connections: 200  # 最大连接数
    max-threads: 150      # 最大线程数
    accept-count: 100     # 等待队列的最大长度

2.3 参数说明

  • max-connections:Tomcat 接受的最大连接数。
  • max-threads:Tomcat 处理请求的最大线程数(即同时处理请求的最大数量)。
  • accept-count:当所有线程都在忙碌时,新的请求会进入等待队列,accept-count 定义了等待队列的最大长度。如果等待队列也满了,新的请求将会被拒绝。

3. 其他内嵌服务器的配置

如果你使用的是 Jetty 或 Undertow,配置方式会有所不同。

3.1 Jetty

server.jetty.max-threads=200  # 最大线程数
server.jetty.accept-queue-size=100  # 等待队列的最大长度

3.2 Undertow

server.undertow.io-threads=4  # I/O 线程数
server.undertow.worker-threads=200  # 工作线程数
server.undertow.buffer-size=1024  # 缓冲区大小

4. 如何选择合适的最大连接数

  • max-threads:通常设置为 CPU 核心数的 2 到 4 倍。例如,4 核 CPU 可以设置为 8 到 16。
  • max-connections:根据应用的并发需求设置。如果并发量较大,可以适当增加。
  • accept-count:根据应用的负载情况设置。如果请求处理时间较长,可以增加等待队列的长度。

5. 总结

  • Spring Boot 默认使用 Tomcat,最大连接数为 100
  • 可以通过 server.tomcat.max-connectionsserver.tomcat.max-threadsserver.tomcat.accept-count 配置最大连接数、线程数和等待队列长度。
  • 如果使用 Jetty 或 Undertow,配置方式会有所不同。
  • 根据应用的并发需求和硬件资源,合理调整这些参数以优化性能。

如果你在面试中被问到这个问题,可以结合默认值和配置方法进行回答,并展示你对性能调优的理解。

THE END
点赞6 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容