使用多线程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
网友评论