当前位置: 代码网 > it编程>编程语言>Java > SpringBoot中优化Undertow性能的方法总结

SpringBoot中优化Undertow性能的方法总结

2024年08月28日 Java 我要评论
1. 为什么不进行tomcat参数调优有两个方案:进行tomcat容器调优或者替换为性能更强的容器。可以进行tomcat调优,但是undertow容器在性能和内存上都优于tomcat容器,因此直接选择

1. 为什么不进行tomcat参数调优

有两个方案:进行tomcat容器调优或者替换为性能更强的容器。可以进行tomcat调优,但是undertow容器在性能和内存上都优于tomcat容器,因此直接选择undertow容器并进行调优是更好的选择。

2. 在springboot应用中如何优化undertow性能

2.1. 线程池配置

在springboot应用的application.propertiesapplication.yml中,可以调整undertow的线程池设置。包括io线程和工作线程的设置。

  • server.undertow.io-threads:设置io线程数,负责处理非阻塞的网络io。通常设置为与cpu核心数相等的值。它们会负责多个连接,不要设置过大,如果过大,启动项目会报错:打开文件数过多
  • server.undertow.worker-threads:阻塞任务线程池, 当执行类似servlet请求阻塞io操作, undertow会从这个线程池中取得线程,它的值设置取决于系统线程执行任务的阻塞系数,默认值是io线程数*8
server.undertow.io-threads=8
server.undertow.worker-threads=128

2.2. 缓冲区和内存使用

  • server.undertow.buffer-size:设置每个缓冲区的大小。以下的配置会影响buffer,这些buffer会用于服务器连接的io操作,有点类似netty的池化内存管理, 每块buffer的空间大小,越小的空间被利用越充分,不要设置太大,以免影响其他应用,合适即可
  • server.undertow.direct-buffers:是否分配的直接内存(nio直接分配的堆外内存)
  • server.undertow.buffers-per-region: 每个区分配的buffer数量,所以pool的大小是buffer-size * buffers-per-region

例如:

server.undertow.buffer-size=1024
server.undertow.direct-buffers=true

2.3. 连接和请求超时

  • server.undertow.max-http-post-size:设置http post请求的最大内容大小,以适应可能的文件上传或大批量数据提交。
  • server.undertow.no-request-timeout:设置连接在不处理请求的情况下闲置的时间。

例如:

server.undertow.max-http-post-size=0 # 不限制大小,或根据实际情况调整
server.undertow.no-request-timeout=1800s # 例如,设置为30分钟

2.4. 禁用无关的设置

  • server.undertow.session-cookie-config:设置会话cookie的配置,可以选择不使用cookie以减少http响应的大小。
  • server.undertow.accesslog.enabled:根据需要启用或禁用访问日志。

例如:

server.undertow.session-cookie-config=none
server.undertow.accesslog.enabled=false

2.5. 编程式配置

通过实现webserverfactorycustomizer<undertowservletwebserverfactory>接口来编程式地配置undertow,可以更加灵活。

2.6. 启用http/2

通过配置启用undertow支持的http/2,可以提高网络传输效率。

2.7 示例配置

在springboot项目的application.propertiesapplication.yml中配置:

#  io线程
server.undertow.io-threads=16
# 工作线程
server.undertow.worker-threads=256
# 缓冲区大小
server.undertow.buffer-size=1024
# 是否分配的直接内存(nio直接分配的堆外内存)
server.undertow.direct-buffers=true
# 启用http/2
server.undertow.enabled-http2=true

到此这篇关于springboot中优化undertow性能的方法总结的文章就介绍到这了,更多相关springboot优化undertow性能内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com