生产环境 SpringBoot Tomcat 线程卡住 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
jmychou
V2EX    程序员

生产环境 SpringBoot Tomcat 线程卡住

  •  
  •   jmychou 2024-05-24 10:00:58 +08:00 3053 次点击
    这是一个创建于 573 天前的主题,其中的信息可能已经有所发展或是发生改变。

    生产环境使用 JDK8+SpringBoot2.x+SpringBoot 内嵌 tomcat9.x,

    在 K8s Docker 环境部署,最近时有偶发的对方发起 HTTP 请求,这边隔了 2-10s 才会处理请求,网络抓包发现握手和响应请求报文 ACK 都很快,但是链路上看 Servlet 就是间隔了 2-10s 才进行处理

    看了下当时的并发、资源情况和 GC 都很正常,由于是偶发的,本地也无法复现,所以想咨询各位大佬

    • 这种偶发的阻塞还有可能是其他什么原因引起的,可以从哪方面进行排查?
    • 是否有工具或者方法检测监控这种问题?
    22 条回复    2024-05-25 22:29:35 +08:00
    defunct9
        1
    defunct9  
       2024-05-24 10:04:49 +08:00
    iptables 规则太多了?
    javak
        2
    javak  
       2024-05-24 10:13:10 +08:00
    感觉是 k8s 的问题,我们相同版本的 jdk + springboot 。 但是没有用 k8s , 直接用的阿里云的 ecs, 没出现过这种问题。
    Scarb
        3
    Scarb  
       2024-05-24 10:17:31 +08:00
    服务端负载很高吗?把抓包文件或者截图放上来看看
    gzldc
        4
    gzldc  
       2024-05-24 10:19:01 +08:00
    @defunct9 哥们怎么哪都有你 老摸鱼怪呀
    ThisDay
        5
    ThisDay  
       2024-05-24 11:01:38 +08:00
    线程数满了?
    cheng6563
        6
    cheng6563  
       2024-05-24 11:02:55 +08:00
    看是不是 swap 了
    justNoBody
        7
    jusNoBody  
       2024-05-24 11:14:53 +08:00
    > 最近时有偶发的对方发起 HTTP 请求,这边隔了 2-10s 才会处理请求

    想问一下这里的隔了 2-10s 才会处理请求是通过什么方式确认的?是查看具体的 tomcat http 线程任务打印的日志么?

    此外,能不能发一下 tomcat http 线程的配置以及实际的线程信息
    cloud107202
        8
    cloud107202  
       2024-05-24 11:25:49 +08:00
    极大概率是 DNS 解析导致的(遇到过走 ipv6 解析,5s timeout 后回落到 ipv4)。从请求发送端看看,尤其是用了 alpine 镜像的服务容器
    2tongW
        9
    2tongW  
       2024-05-24 11:35:16 +08:00
    同意楼上的说法,之前我们也有个内网的服务器登录时耗时 10S+其他接口都没问题。最后排查原因是 InetAddress.getLocalHost().getHostName() 的问题。
    参考:https://stackoverflow.com/questions/33289695/inetaddress-getlocalhost-slow-to-run-30-seconds
    liuhailiang
        10
    liuhailiang  
       2024-05-24 11:36:29 +08:00
    加日志 逐步排查 提供个思路
    增加请求 traceid 把请求日志串联起来,并返回给调用方
    调用方给出耗时高的 traceid
    你这边捞日志看耗时在哪里,当然最好是能接入 apm 系统,可以更直观看到耗时在哪
    bthulu
        11
    bthulu  
       2024-05-24 11:49:04 +08:00
    看看是不是有人在接口里写了一句 thread.sleep
    zed1018
        12
    zed1018  
       2024-05-24 12:03:46 +08:00
    想办法抓个火焰图看看
    anyele
        13
    anyele  
       2024-05-24 13:29:50 +08:00
    尽量别用 alpine 镜像
    jmychou
        14
    jmychou  
    OP
       2024-05-24 14:19:36 +08:00
    @justNoBody #7 链路 trace 的 servet#service 方法以及过滤器打印的请求日志,这两个时间差不多, 并发不高,tomcat 线程没有满
    jmychou
        15
    jmychou  
    OP
       2024-05-24 14:20:45 +08:00
    @cloud107202 #8 走的注册中心,直接拿 IP 访问的,不用 DNS 解析了吧
    jmychou
        16
    jmychou  
    OP
       2024-05-24 14:20:56 +08:00
    @2tongW #9 走的注册中心,直接拿 IP 访问的,不用 DNS 解析了吧
    jmychou
        17
    jmychou  
    OP
       2024-05-24 14:21:59 +08:00
    @liuhailiang #10 已经有 trace 了,但是只 trace 到 servet#service 这层,前面 tomcat nio 那一层暂时 trace 不到
    jmychou
        18
    jmychou  
    OP
       2024-05-24 14:22:30 +08:00
    @anyele #13 用的麒麟
    jmychou
        19
    jmychou  
    OP
       2024-05-24 14:23:07 +08:00
    @Scarb #3 负载并发不高
    YCNQc647Cfngdp89
        20
    YCNQc647Cfngdp89  
       2024-05-24 15:29:23 +08:00
    https://stackoverflow.com/questions/9882357/how-to-set-java-net-preferipv4stack-true-at-runtime
    https://stackoverflow.com/questions/58991966/what-java-security-egd-option-is-for

    我猜可能和这两个有关系,可以试一下;可以用 arthas trace 一下调用链路,看看耗时在哪儿
    Mystery0
        21
    Mystery0  
       2024-05-24 18:12:50 +08:00
    获取随机数的时候很慢?
    xueling
        22
    xueling  
       2024-05-25 22:29:35 +08:00
    偶发性的问题不太容易定位,跟很多因素有关,可能是外部原因,比如正在 GC ,或者某个时间段网络/磁盘 IO 过载导致的,也可能是你接口本身的问题,其实原因挺多的。最好监控一下接口在各个耗时区间的分布情况,然后在每个重要环节都添加上耗时监控,再把 trackId 找出来比对日志逐一排查。偶发性的问题其实不太好排查,都是笨方法。可以了解一下我的开源项目: https://github.com/xl-xueling/xl-lighthouse ,让你轻松实现任意细粒度的接口耗时监控。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4908 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 09:39 PVG 17:39 LAX 01:39 JFK 04:39
    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