• 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

        

  • 相关阅读:
    Python第二十天 shutil 模块 zipfile tarfile 模块
    SQL Server中SET QUOTED_IDENTIFIER的使用
    SQL Server AG集群启动不起来的临时自救大招
    检查使用共享表空间的表
    数据库历史简图
    线上centos6出现软死锁 kernel:BUG: soft lockup
    ORA-01810:格式代码出现两次 解决方法
    C# DES (ECB模式) 加密解密 --单倍长
    Android-ContentProvider使用
    第十三周(动物这样叫)
  • 原文地址:https://www.cnblogs.com/thinkingandworkinghard/p/16035391.html
Copyright © 2020-2023  润新知