方法不执行,没有任何报错信息,请教思路 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
heyjude321
V2EX    Java

方法不执行,没有任何报错信息,请教思路

  •  
  •   heyjude321 2022-03-25 18:06:33 +08:00 2049 次点击
    这是一个创建于 1298 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大家好。我遇到个棘手的问题,无从下手。 我的给微信用户发送模板消息的方法不执行,日志没有报错信息,微信公众号管理页面后台也没找到任何报错信息。 重启项目后问题消失,但过一段时间问题复现,大概有个 6 天不重启能出现一次,目前发现是在系统繁忙后会偶尔出现此问题。 初步判断是: 未成功调用发送消息的 sendTemplateMsg()方法,此方法由 @Async 标识,是异步方法,@Async 是用默线程池配置,初步判断是线程池任务队列参数过大,导致任务积压无法完成。 尝试了自定义线程池,配置如下:

    ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor(); taskExecutor.setCorePoolSize(8); taskExecutor.setMaxPoolSize(25); taskExecutor.setQueueCapacity(1000);//之前这里是 Inteter.max_value 。会不会是 1000 还是太大了? taskExecutor.setThreadNamePrefix("msg-thread-"); taskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.AbortPolicy()); taskExecutor.initialize();

    用户依旧收不到消息,且不报错。 线程信息大部分情况如下:

    Status Number of Threads : 384 Percentage Deadlock 0 0 (%) Runnable 16 4 (%) Waiting on condition 354 92 (%) Waiting on monitor 0 0 (%) Suspended 0 0 (%) Object.wait() 14 4 (%) Blocked 0 0 (%) Parked 0 0 (%)

    出现问题时的线程信息忘记导出了(当时只想快点解决生产问题而急忙重启)。

    请教大家该如何排查?

    8 条回复    2022-04-13 10:27:45 +08:00
    Jooooooooo
        1
    Jooooooooo  
       2022-03-25 18:09:28 +08:00
    你配置一下拒绝策略, 在拒绝里打个日志. 看看是否有真的被线程池拒绝的.
    RedBeanIce
        2
    RedBeanIce  
       2022-03-26 12:55:30 +08:00 via iPhone
    注解有传递线程池进去吧,然后 async 方法里面没有错误日志吗
    awolf
        3
    awolf  
       2022-03-26 14:23:37 +08:00
    上线程池还不如上 mq 算了
    heyjude321
        4
    heyjude321  
    OP
       2022-03-26 17:24:16 +08:00
    @RedBeanIce 有指定线程池。没有错误日志。
    heyjude321
        5
    heyjude321  
    OP
       2022-03-26 17:25:31 +08:00
    @awolf 这个有考虑过。如果真的找不到原因,就尝试上 mq 。
    zhongpingjing
        6
    zhongpingjing  
       2022-03-27 19:44:04 +08:00
    重启后恢复,大概率是线程池被打满造成,可能原因之一就是线程资源没有被释放,可以看看栈信息
    heyjude321
        7
    heyjude321  
    OP
       2022-04-13 10:13:59 +08:00
    @zhongpingjing
    我查看了出现问题时的 jstack log ,我发现线程池全部都是这种 Waiting on condition ,全在等待条件,就是不释放。
    大概率是你说的这种原因。
    我猜测应该是 websocket 发送消息时,浏览器因为某种原因,导致 websocket 认为应该等待后再继续发送消息。

    ==========
    hread Name
    msg-thread2-7
    State
    Waiting on condition
    Java Stack
    at sun.misc.Unsafe.park(Native Method)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
    at org.eclipse.jetty.util.SharedBlockingCallback$Blocker.block(SharedBlockingCallback.java:219)
    at org.eclipse.jetty.websocket.common.BlockingWriteCallback$WriteBlocker.block(BlockingWriteCallback.java:90)
    at org.eclipse.jetty.websocket.common.WebSocketRemoteEndpoint.blockingWrite(WebSocketRemoteEndpoint.java:107)
    at org.eclipse.jetty.websocket.common.WebSocketRemoteEndpoint.sendString(WebSocketRemoteEndpoint.java:385)
    at org.eclipse.jetty.websocket.jsr356.JsrBasicRemote.sendText(JsrBasicRemote.java:108)
    ....
    heyjude321
        8
    heyjude321  
    OP
       2022-04-13 10:27:45 +08:00
    找到个解决方案:
    https://www.cxyzjd.com/article/candyzh/74906202

    准备试下 getAsyncRemote()
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5298 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 08:54 PVG 16:54 LAX 01:54 JFK 04:54
    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