请教一个可能是 Tomcat 相关的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
volantRookie
V2EX    程序员

请教一个可能是 Tomcat 相关的问题

  •  
  •   volantRookie 2023-12-13 20:00:01 +08:00 1800 次点击
    这是一个创建于 698 天前的主题,其中的信息可能已经有所发展或是发生改变。

    先说下大概情况,环境使用的 openjdk1.8 ,使用 springboot 开发的一个业务程序,没有微服务框架,测试机和服务机同是内网机器,网络延迟很低。现象是服务器的内存占用在 40%左右,CPU 占用在 30%左右,用 jmeter 压测,线程数分别开到 100 、300 、500 ,吞吐量一直在 30 多一点,内存和 CPU 占用也没有提升。正常的现象不是应该随着并发的提升,资源占用越来越高吗,为什么这个吞吐量一直上不去,服务器资源还有很大空闲。补充一点,我把压测的那一个接口业务内容都注释了,是一个空方法,没有数据库和其他的业务操作。 已经排查过的问题: 1.首先改的是 Tomcat 配置,改了 maxThreads=10000 ,maxCOnnections=10000 ,acceptCount=-1 。 2.后来网上搜到说是可能是 nginx 、tomcat 的 keepalive 配置不匹配有关,这里没有用 nginx 。 3.用 jprofiler 看到的情况是,线程不停地在加,但是大量的线程进入了 timed waiting 状态,后来用 jstack 命令看这些线程,没有显示出服务里边具体的代码行号,显示的是

    • waiting on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject tomcat 的 taskQueue.poll 方法之后,后来用 netstat 去看有很多 tcp 连接在服务端口处于 timed waiting 状态

    感觉还是和 Tomcat 的配置有关,有没有懂这块的大佬,给个排查的思路,或者给个方向也行,谢谢啦

    13 条回复    2023-12-15 08:55:12 +08:00
    ikas
        1
    ikas  
       2023-12-13 22:48:58 +08:00
    你改的线程数太大了,没有意义

    你要先估计你的业务方法大概的执行时间,然后再来估计最大并发

    比如你的业务相当小,里面就是一个简单的计算,那么这时候线程数配置到 cpu 内核数即可

    如果你的业务内是一个复杂的计算,相当耗时,那么就根据时间 倒推最大的线程数,逐层测试

    如果你的业务内又是网络连接等 io 操作,那么你要先优化这些,比如异步,加线程池,然后再来计算
    adoal
        2
    adoal  
       2023-12-13 23:14:28 +08:00
    acceptCount 设置-1 是哪里的说法
    chendy
        3
    chendy  
       2023-12-13 23:48:13 +08:00   1
    建议直接起个空 spring boot 项目,写一个空接口,直接对着 spring boot 的端口压
    然后再一点点把你们的东西加上来,看看是哪里的问题
    volantRookie
        4
    volantRookie  
    OP
       2023-12-14 08:49:52 +08:00
    @chendy 好嘞,如果再找不到只能这样慢慢加了,Thanks(ω)
    volantRookie
        5
    volantRookie  
    OP
       2023-12-14 08:50:35 +08:00
    @adoal 等待队列的大小,为负数就是无限制,查到的是这么说的
    volantRookie
        6
    volantRookie  
    OP
       2023-12-14 08:53:42 +08:00
    @ikas 请求的那个接口内容已经注释掉了,是一个空方法,按道理服务器压力主要来自请求的接收,就是想排除与业务有关的问题,所以感觉大概率是外部原因。Thanks(ω)
    mango88
        7
    mango88  
       2023-12-14 09:06:15 +08:00
    吞吐量上不去时候 有观察过 GC 情况吗 ?
    volantRookie
        8
    volantRookie  
    OP
       2023-12-14 09:09:32 +08:00
    @mango88 GC 看到的波动没有很剧烈,对了,启动内存给的 8G ,实际只使用了 1G
    imokkkk
        9
    imokkkk  
       2023-12-14 13:40:33 +08:00
    确实奇怪
    dumbbell5kg
        10
    dumbbell5kg  
       2023-12-14 13:55:55 +08:00
    吞吐量一直在 30 多一点,是不是看错了?
    因为 waiting on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject 说明 tomcat 线程在等队列里产生任务,已经没任务执行了,怎么会还是 30 多
    dumbbell5kg
        11
    dumbbell5kg  
       2023-12-14 13:59:29 +08:00   1
    来个 demo 项目,和压测操作步骤(带图),如果情况跟你说的一样,我有兴趣研究
    chaoschick
        12
    chaoschick  
       2023-12-14 19:19:38 +08:00 via Android
    有没有可能是改 tomcat 线程数的那块配置没生效
    volantRookie
        13
    volantRookie  
    OP
       2023-12-15 08:55:12 +08:00
    @chaoschick 我再试试
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     991 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 19:20 PVG 03:20 LAX 11:20 JFK 14:20
    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