httpclient4.3 导致线程阻塞

项目使用httpclient4.3.3,突然有天发现推送线程池排队,通过jstack 定位到httpclient进行ssl连接时发生阻塞。httpclient 的SocketTimeout 和 ConnectTimeout都有设置。

后分析查找,确认是httpclient4.3.3的bug,

https://issues.apache.org/jira/browse/HTTPCLIENT-1478

大概原因是由于ssl握手失败,导致设置的超时时间无效。进而引发现场阻塞,导致线程池线程被占满

时间: 2024-10-29 00:37:08

httpclient4.3 导致线程阻塞的相关文章

多线程之Java线程阻塞与唤醒

线程的阻塞和唤醒在多线程并发过程中是一个关键点,当线程数量达到很大的数量级时,并发可能带来很多隐蔽的问题.如何正确暂停一个线程,暂停后又如何在一个要求的时间点恢复,这些都需要仔细考虑的细节.在Java发展史上曾经使用suspend().resume()方法对于线程进行阻塞唤醒,但随之出现很多问题,比较典型的还是死锁问题.如下代码,主要的逻辑代码是主线程启动线程mt一段时间后尝试使用suspend()让线程挂起,最后使用resume()恢复线程.但现实并不如愿,执行到suspend()时将一直卡住

java线程阻塞问题排查

我开发的worker,每隔几个月线上都会阻塞一次,一直都没查出问题.今天终于了了这个心结.把解决过程总结下和大家分享. 首先用jstack命令打出这个进程的全部线程堆栈.拿到线程dump文件之后,搜索自己的worker名字. "DefaultQuartzScheduler_Worker-10" prio=10 tid=0x00007f55cd54d800 nid=0x3e2e waiting for monitor entry [0x00007f51ab8f7000] java.lan

java调用process线程阻塞问题

背景 项目需求中涉及java调用.bat文件进行图像处理,先直接上简略版程序 1 public void draw(){ 2 3 //调用bat脚本进行图像处理 4 Process process = null; 5 InputStream in = null; 6 try { 7 process = Runtime.getRuntime().exec("startup.bat"); 8 9 //输出测试 10 // in = process.getInputStream(); 11

线程阻塞导致的性能问题分析

近期一项目反馈,在月底时出现某功能反应异常卡顿的情况,总结规律为,只要某个耗时较长的大查询执行时,被影响的功能就不能正常使用.怀疑出现阻塞问题,先在数据库层面跟踪未发现阻塞等异常,跟踪被影响的功能,发现没有耗时较长的SQL,但是出现两个SQL之间时间间隔很长的情况.同时检查fiddler跟踪的webservices信息,发现有一个webs持续时间超长.推测可能为应用服务器出现线程阻塞.在问题重现时,抓取w3wp.exe进程dump.分析过程如下: 先检查是否存在线程阻塞的情况,发现系统当前存在线

批量线程阻塞

17在3月6号有失败情况.19,20都停了.10,2也都停了. 2017年3月17日00:29:32分析可能是BatchRunner类里的monitor崩溃了.现象是:批量机的调度程序,是正常的,并且一直到时启动.但是批量并未执行.而非批量机却由于有core的日切调用,会有一条数据.(隔一天有一条,是由于负载的原因)猜想是runBatch在执行17的队列时,遇到某种错误,导致线程挂掉了.但是runBatch又捕捉了Throwable,理论上来说,所有异常错误都会捕捉到的. 或者runBatch没

线程阻塞工具类:LockSupport(读书笔记)

他可以在线程任意位置让线程阻塞, LockSupport的静态方法park()可以阻塞当前线程,类似的还有parkNanos() ParkUntil()等,他们实现了一个限时等待 public class LockSupportDemo { public static Object u = new Object(); static ChangeObjectThread t1 = new ChangeObjectThread("t1"); static ChangeObjectThrea

线程阻塞和挂起(网络收集)

线程阻塞 线程在运行的过程中因为某些原因而发生阻塞,阻塞状态的线程的特点是:该线程放弃CPU的使用,暂停运行,只有等到导致阻塞的原因消除之后才回复运行.或者是被其他的线程中断,该线程也会退出阻塞状态,同时抛出InterruptedException. 一般线程中的阻塞: A.线程执行了Thread.sleep(int millsecond);方法,当前线程放弃CPU,睡眠一段时间,然后再恢复执行 B.线程执行一段同步代码,但是尚且无法获得相关的同步锁,只能进入阻塞状态,等到获取了同步锁,才能回复

Java多线程——线程阻塞工具类LockSupport

简述 LockSupport 是一个非常方便实用的线程阻塞工具,它可以在线程内任意位置让线程阻塞. 和 Thread.suspend()相比,它弥补了由于 resume()在前发生,导致线程无法继续执行的情况. 和 Object.wait()相比,它不需要先获得某个对象的锁,也不会抛出 InterruptedException 异常. LockSupport 的静态方法 park()可以阻塞当前线程,类似的还有 parkNanos().parkUntil()等方法.它们实现了一个限时等待,如下图

Android学习:UI线程阻塞

一:看程序 二:现象 程序启动,button1会自动向右滑动三次,但是当点击Button2的时候,button1移动会暂停5秒. 三:线程阻塞: 当一个应用程序启动之后,android系统会为这个应用创建一个主线程.这个线程非常重要,它负责渲染视图,分发事件到响应监听器并执行,对界面进行轮询监听.因此,一般也叫做"UI线程". android系统不会给应用程序的多个元素组件,建立多个线程来执行.一个视图Activity中的多个view组件运行在同一个UI线程中.因此,多个view组件的