HttpClients中https设置超时无效的问题

使用多线程https请求数据时,发现一段时间所有线程都锁住了,使用线程堆栈工具发现线程都锁住,堆栈信息如下

堆栈图

打了很多日志,发现请求超时时间超过自己设置的时间。

查阅相关资料发现:

1.httpclients有关于ssl锁导致设置超时无效的问题,但是在新版本后修复了该bug,自己用的是最新版本

2.jdk的ssl有个bug也会导致该问题,在8的一些版本9中已经修复。

3.HttpsClients中设置超时时间的需要如下设置


ssl设置超时方式

本人使用第三种方式解决了超时的问题,如果要彻底解决最好使用jdk的相关版本和HttpClients的最新版本

参阅:

https://www.cnblogs.com/bestruggle/p/9836749.html?tdsourcetag=s_pctim_aiomsg

https://stackoverflow.com/questions/25968769/got-stuck-at-java-net-socketinputstream-socketread0native-method

jdkbug:https://bugs.openjdk.java.net/browse/JDK-8075484

你可能感兴趣的:(HttpClients中https设置超时无效的问题)