胖蔡说技术
随便扯扯

网络拥塞导致线程池处于等待状态

场景

一次批量执行任务(12个),最后任务执行成功会批量上传图片,导致线程池都处于等待状态。

19481562921545_.pic_hd

首先这个线程池是通过newSingleThreadExecutor来创建的,并且在执行过程中,不会有新的任务进来,当时的情况是在线程执行过程中卡主,实际发生在上传图片,类似的线程池多大12个,每个线程上传的图片可能多大上百张。

分析

分析上面jstack打印的日志(打印方法是jstack pid),有个waiting on condition,它的含义,我搜了下,是这样的

19541562924017_.pic_hd

由此可以猜测,可能是大并发上传图片导致网络拥塞

解决方法

做一个固定线程大小的线程池,比如3个,专门用于并发上传图片,避免网络拥塞。

赞(0) 打赏
转载请附上原文出处链接:胖蔡说技术 » 网络拥塞导致线程池处于等待状态
分享到: 更多 (0)

请小编喝杯咖啡~

支付宝扫一扫打赏

微信扫一扫打赏