低延时系统, Java 应用如何配置线程数 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
0576coder

低延时系统, Java 应用如何配置线程数

  •  
  •   0576coder 2021 年 1 月 29 日 2285 次点击
    这是一个创建于 1911 天前的主题,其中的信息可能已经有所发展或是发生改变。
    • 服务器

    3 台普通云服务器厂商常规的 8 核 8G 前面有个 ng 做负载

    • 运行方式

    spring-boot 内置的 tomcat 采用 nio 模式 jar 包启动

    • 系统接口平均响应时间

    10-20 毫秒

    • 每天接受到的请求数

    800 万

    • 系统峰值 qps

    300+ 平均每台 100 左右

    • tomcat 配置

    100 线程 accetpt 1000 max 1000

    • 程序逻辑

    请求进来 从 ThreadPoolExecutor()里 execut 计算后返回 ( IO 计算,hbase redis 等查询)

    • 背景

    随着业务增加 系统复杂度增高。平均接口响应时间增加。 导致高峰期响应时间超过 50 毫秒的接口响应数增加。

    业务方需要比较稳定的接口响应时间 且<=50 毫秒 今天增加了部分业务逻辑 导致整体接口响应时间上升了约 1 毫秒 结果高峰期整体系统超过 50 毫秒接口数增加了很多个

    系统 cup 负载不高

    • 问题

    tomcat 配置应该可以调低线程数 accept 跟 max 可以不动

    ThreadPoolExecutor 配置多少线程合理

    redis 连接池设多大合理

    hbase poolsize 设多大

    g1gc 多久一次算正常

    hbase 偶尔有几条比较高的耗时

    redis 无压力

    目前系统负载么啥压力 请求量也无大的上升 就是整体接口的平均耗时稍微增加了一两毫秒 导致某些核心接口需要 50 毫秒内返回的 结果 50 毫秒内没能返回 排除 hbase 的那几次超时 能否通过合理的线程池配置来降低接口的响应时间

    现在最简单的办法就是增加一两台物理机 应该就能减少超过 50 毫秒的接口了

    9 条回复    2021-01-29 20:57:04 +08:00
    66Zi2nJk5Z6mdtzj
        1
    66Zi2nJk5Z6mdtzj  
       2021 年 1 月 29 日 via iPhone   1
    我之前做 dsp 广告推荐系统,要求所有的请求在服务器的执行时间不超过 10ms 。线程数量的配置,需要根据具体的业务来看。如果是 io 多,等待耗时,线程数可以调大。如果是 cpu 计算的,线程数一般是 cpu 核心的两倍,之前我做得游戏 server,用 netty 做得。如果业务消耗时间太长,可以考虑去优化业务。我之前广告系统因为对数据的准确性要求没那么高,能走内存走内存,其次是 Redis,db 仅仅是拿来异步存储数据。后面的游戏对数据要求高,是保证 Redis 的稳定性来确保数据的准确性。手机,原谅,没有排版
    liuhuan475
        2
    liuhuan475  
       2021 年 1 月 29 日
    等一个大佬
    heyjei
        3
    heyjei  
       2021 年 1 月 29 日 via Android
    0576 老乡啊
    Jooooooooo
        4
    Jooooooooo  
       2021 年 1 月 29 日
    整个业务逻辑如果 io(外部调用)比较多, 那可以加大线程池

    cpu 不高说明机器负载低, 线程池都可以加大
    zzh7982
        5
    zzh7982  
       2021 年 1 月 29 日
    ThreadPoolExecutor 和 tomcat 都改成 200
    huang119412
        6
    huang119412  
       2021 年 1 月 29 日
    整体而言,瓶颈在 db,其次才是 GC,java8 以及之前最好的是 CMS 。基本上是业务调优和 CMS 的调优,参考美团 tech
    https://tech.meituan.com/2020/08/06/new-zgc-practice-in-meituan.html
    u2r1Hqo6HExmNsrt
        7
    u2r1Hqo6HExmNsrt  
       2021 年 1 月 29 日
    怎么做到稳定 50ms 一下这么低得延迟?现在我公司的线上项目多查两次数据库,延迟就超过 50 了
    0576coder
        8
    0576coder  
    OP
       2021 年 1 月 29 日
    我加了下线程数 调到了 200
    看下今晚超过 50 的会不会降低
    0576coder
        9
    0576coder  
    OP
       2021 年 1 月 29 日
    @Nillouise
    买好的数据库 服务器正常点 只要没有奇怪的业务 或者依赖 3 方接口数据 肯定能稳啊
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5714 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 454ms UTC 03:27 PVG 11:27 LAX 20:27 JFK 23:27
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86