springboot 内置容器Undertow 优化记录


                   问题描述:最近项目在各个环境,发现第一次请求时候,总是会很慢。但是之后的请求都是几十或者几百毫秒。通过skywalking检测,发现有个undertow特别耗时:

   

 

 

 

 

一般都是第一次有这个问题,之后再请求,都是毫秒级的。

      网上搜了几次后,刚开始是在yaml文件加上配置:

      

 server:
  port: ${LAFENG_SERVER_PORT:8102}
  undertow:
    io-threads: 16
    # 阻塞任务线程池, 当执行类似servlet请求阻塞IO操作, undertow会从这个线程池中取得线程
    # 它的值设置取决于系统线程执行任务的阻塞系数,默认值是IO线程数*8
    worker-threads: 256
    # 以下的配置会影响buffer,这些buffer会用于服务器连接的IO操作,有点类似netty的池化内存管理
    # 每块buffer的空间大小,越小的空间被利用越充分,不要设置太大,以免影响其他应用,合适即可
    buffer-size: 1024
    # 每个区分配的buffer数量 , 所以pool的大小是buffer-size * buffers-per-region
    #buffers-per-region: 1024
    # 是否分配的直接内存(NIO直接分配的堆外内存)
    direct-buffers: true

   发现不起作用,刚开始以为是自己设置的问题。但是网上开了几篇类似文章,解决方式都是让加这个配置。最后发现是自己写的方式有问题:改成这种就生效了

 

 

 

   

server:
  port: ${LAFENG_SERVER_PORT:8102}
  undertow:
    # 阻塞任务线程池, 当执行类似servlet请求阻塞IO操作, undertow会从这个线程池中取得线程
    # 它的值设置取决于系统线程执行任务的阻塞系数,默认值是IO线程数*8
    # 以下的配置会影响buffer,这些buffer会用于服务器连接的IO操作,有点类似netty的池化内存管理
    # 每块buffer的空间大小,越小的空间被利用越充分,不要设置太大,以免影响其他应用,合适即可
    buffer-size: 1024
    # 每个区分配的buffer数量 , 所以pool的大小是buffer-size * buffers-per-region
    #buffers-per-region: 1024
    # 是否分配的直接内存(NIO直接分配的堆外内存)
    direct-buffers: true
    threads:
      io: 8
      worker: 256

 

    具体原因,网上有分析。参考:

   https://blog.csdn.net/hunger_wang/article/details/91997210?spm=1001.2101.3001.6650.16&utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-16.topblog&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-16.topblog&utm_relevant_index=23

 

 

  https://blog.csdn.net/weixin_40623736/article/details/117482482

 

https://blog.csdn.net/hunger_wang/article/details/90180215

 

 

    


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM