[图片] undertow,jetty 和 Tomcat 可以说是 javaweb 项目当下最火的三款服务器,Tomcat 是 apache 下的一款重量级的服务器,不用多说历史悠久,经得起实践的考验。 然而:当下微服务兴起,Spring boot ,Spring cloud 越来越热的情况下,选择一款轻量级而性能优越 ..

Tomcat、Jetty、Undertow、Netty 等容器的区别

image.png

因此: SpringBoot 使用轻量级的 undertow 容器替代重量级 Tomcat,支持 HTTP2.0,性能更好,稳定性更好

 <!-- 添加spring-boot-starter-web,默认使用tomcat作为web容器 -->
        <dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
			<exclusions>
				<exclusion>
					<groupId>org.springframework.boot</groupId>
					<artifactId>spring-boot-starter-logging</artifactId>
				</exclusion>
				<exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
			</exclusions>
		</dependency>
		<!-- 去除tomcat,将undertow作为容器 -->
		 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-undertow</artifactId>
        </dependency>
server:
  undertow:
    # 设置IO线程数, 它主要执行非阻塞的任务,它们会负责多个连接, 默认设置每个CPU核心一个线程
    # 不要设置过大,如果过大,启动项目会报错:打开文件数过多
    io-threads: 8
    # 阻塞任务线程池, 当执行类似servlet请求阻塞IO操作, undertow会从这个线程池中取得线程
    # 它的值设置取决于系统线程执行任务的阻塞系数,默认值是IO线程数*8
    worker-threads: 64
    # 以下的配置会影响buffer,这些buffer会用于服务器连接的IO操作,有点类似netty的池化内存管理
    # 每块buffer的空间大小,越小的空间被利用越充分,不要设置太大,以免影响其他应用,合适即可
    buffer-size: 1024
    # 是否分配的直接内存(NIO直接分配的堆外内存)
    direct-buffers: true
回帖
请输入回帖内容...