logback 在打印完一个很大的内容的时候,程序会卡在那里很久是为什么? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
abcbuzhiming
V2EX    Java

logback 在打印完一个很大的内容的时候,程序会卡在那里很久是为什么?

  •  
  •   abcbuzhiming 2022-04-12 12:34:23 +08:00 2584 次点击
    这是一个创建于 1278 天前的主题,其中的信息可能已经有所发展或是发生改变。
    这个问题是无意中发现的:

    有个新人不太懂数据处理,一口气把数据库 4w 多条数据都拿了出来,然后转换成了 json 字符串,调用 log 打印。


    它测试是在 IDEA 里执行调试模式。打印是立刻就打印出来了可以看到打印结果,以及数组 json 最后的结尾括号]。这应该说明 logback 至少打印 api 执行成功。


    但是会在这里卡住,是程序卡住,并非 IDEA 卡住了,IDEA 还能做各操作,然而程序就卡在这里,它也不崩溃,一开始我们以为 OOM 了,但是没有。反正就卡在这。然后等待约 10 分钟的时候。程序又继续若无其事的往下走了。


    这个现象我们现在还没想明白咋回事,高度怀疑是触发 full GC 了,但是 full GC 需要接近 10 分钟吗?我们这其实就是个小程序,平时跑起来就几百 M 内存的那种。

    我们该如何分析这个问题?

    补充:后来我们尝试把 XMX 扩大到 8G ,这个现象没有任何缓解。
    10 条回复    2022-04-24 13:40:25 +08:00
    chendy
        1
    chendy  
       2022-04-12 12:40:07 +08:00
    目测是 idea 的输出卡住了吧……
    vacuitym
        2
    vacuitym  
       2022-04-12 13:37:00 +08:00
    不如试试异步输出能不能解决
    abcbuzhiming
        3
    abcbuzhiming  
    OP
       2022-04-12 13:41:32 +08:00
    @chendy 输出没卡啊,你看那行打印代码的打印结果已经全部输出到 Console 里了,都看到数组结构的 json 结尾的中括号了。但是它就不往后继续执行了,我们试过在后面加一行代码 System.out.println 。确认是一直卡着没往下走。也就是说,log 的那行代码,它把内容完整的输出了,但是程序却停在了这里


    @vacuitym 异步输出是为了做什么?
    warcraft1236
        4
    warcraft1236  
       2022-04-12 13:46:01 +08:00
    @abcbuzhiming 提供一个思路,加上类似 printstacktrace 之类的东西,看看 Jvm 这时候是什么状态,在干什么
    polarbear007
        5
    polarbear007  
       2022-04-12 13:46:11 +08:00
    我猜只是输出的内容太长了(特别是那种没有换行的),控制台卡住了而已。你可以尝试把打印的日志信息写到一个文件中,就不会卡了,当然使用文本编辑器打开这个文件的话估计同样会卡。
    senninha
        6
    senninha  
       2022-04-12 14:07:17 +08:00
    本地的话直接开 jmc 连上去看看不就知道了
    XhstormR02
        7
    XhstormR02  
      &nbs;2022-04-12 23:01:15 +08:00 via Android
    开 RDP 让我上去看看
    wineast
        8
    wineast  
       2022-04-13 14:40:54 +08:00
    之前在 idea 上碰过一个类似的问题,就是程序在本地运行的速度比服务器上慢很多,后来发现是因为日志配置了输出到文件和 console 的关系,每次输出到 console ,打印花了大量的时间和资源,去掉 console 输出后,就快了很多,基本和服务器没什么区别。
    所以我建议加内存是从 idea 上入手,而不是程序本身
    zhady009
        9
    zhady009  
       2022-04-18 09:46:28 +08:00
    用 arthas trace 下一步一步找下去试试
    vacuitym
        10
    vacuitym  
       2022-04-24 13:40:25 +08:00
    @abcbuzhiming 正常生产日志都会异步吧,避免占用资源导致阻塞
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     976 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 23:13 PVG 07:13 LAX 16:13 JFK 19:13
    Do have faith in what you're doing.
    ubao 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