相关文章推荐
无邪的黄瓜  ·  2011年第43期·  6 月前    · 
痴情的牛肉面  ·  尸兄第二季_小红书·  1 年前    · 
强健的柚子  ·  钢铁雄心4 ...·  1 年前    · 

异常分析:

根据关键异常信息:EOF一般指输入流达到末尾,无法继续从数据流中读取; 怀疑可能是由于双方(client<->server) 建立的连接,server端主动close了,为了验证以上猜想: github issue链接 ,根据@edallagnol 描述,当两次请求时间间隔超过server端配置的keep-alive timeout ,server端会主动关闭当前连接,Okhttp 连接池ConnectionPool 默认超时时间是5min,也就是说优先复用连接池中的连接,然而server已经主动close,导致输入流中断,进而抛出EOF 异常。其中keep-alive:两次请求之间的最大间隔时间 ,超过这个间隔 服务器会主动关闭这个连接, 主要是为了避免重新建立连接,已节约服务器资源。
在这里插入图片描述
在这里插入图片描述

解决方案:

  1. 根据上述分析,在创建OkHttpClient实例时,只需要将retryOnConnectionFailure设置为true ,在抛出EOF异常时,让其可以继续去执行realChain.proceed方法即可
  2. 在http请求头中添加request.addHeader(“Connection”, “close”),即不复用TCP长连接
  3. ConnectionPool 中连接默认超时时间是5min,可以减小超时时间,保证ConnectionPool中连接过期时间小于server端的keep_alive时间

参考: https://juejin.cn/post/6844903648854540301

赠送jar包: okhttp -3.14.9.jar; 赠送原API文档: okhttp -3.14.9- java doc.jar; 赠送源代码: okhttp -3.14.9-sources.jar; 赠送Maven依赖信息文件: okhttp -3.14.9.pom; 包含翻译后的API文档: okhttp -3.14.9- java doc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:com.squareup. okhttp 3: okhttp :3.14.9; 标签:squareup、 okhttp 3、 okhttp 、jar包、 java 、中英对照文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。
排查与解决 java . io . EOF Exception : \n not found: limit=0 content =… 起因是项目向华为云 OBS 请求视频, 偶现题目中的异常;如果等一段时间(30s),就可以正常读取到视频。 原因是 OBS SDK 底层用的 Okhttp 连接池,而 Okhttp 的 GitHub 上也有相关 issue: 服务器在返回数据后就直接关闭 TCP 连接,而客户端(项目应用)却将连接放入连接池重复使用; 当下次请求复用时,连接已经被关闭,就读取不到返回值,报上述异常。
android用 okhttp 的坑之 java . io . IO Exception : unexpected end of stream on okhttp 3.Address@178de5cc
ERROR [ IO Exception ]-[120] java . io . IO Exception : unexpected end of stream on okhttp 3.Address@178de5cc at okhttp 3.internal.http.Http1xStream.readResponse(Http1xStre...
由于此问题不是必现,故不太好定位排查,根据关键异常信息: EOF 一般指输入流达到末尾,无法继续从数据流中读取; 怀疑可能是由于双方(client&lt;-&gt;server) 建立的连接,某一方主动close了,为了验证以上猜想,笔者查阅了相关资料,以及做了一些简单的代码实验 Github Issue or google or stackoverflow? 根据@...
1、如果你没有使用 OkHttp Client单例模式的话,而是每次都new 一个 OkHttp Client 在大量的请求下,很容易就会出现OOM 因为 OkHttp Client 每new 一个 就会创建一个线程池,线程池默认有5个线程,不断new 就会出现OOM 2、在使用 OkHttp Client 单例模式的情况下,出现 IO Exception EOF Exception 类似如下: java . io . IO Exception : unexpected end of stream on Connect io n{xxx,
OkHttp Client: IO 问题排查 我们有个需求需要获取上传至oss图片的宽高信息,在原有文件链接后面加上后缀?x-oss-process=image/info,然后使用 OkHttp Client组装get请求获取数据。在测试环境测试的时候,发现会出现偶现的 IO Exception 报错 java . io . IO Exception : unexpected end of stream on Connect io n{, proxy=DIRECT hostAddress= cipherSuite=TLS_EC
okhttp 3.2与okip1.6,使用 okhttp 3.2请求必须要ok io 一起使用。出现 Exception in thread "main" java .lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics at ok io .Ok io .source(Ok io .kt) at okhttp 3.internal. io .RealConnect io n.connectSocket(RealConnect io n. java :144) at okhttp 3.internal. io .RealConnect io n.connect(RealConnect io n. java :111) at okhttp 3.internal.http.StreamAllocat io n.findConnect io n(StreamAllocat io n. java :188) at okhttp 3.internal.http.StreamAllocat io n.findHealthyConnect io n(StreamAllocat io n. java :127) 可以更换为此版本
websocket 服务使用 Nginx 反向代理后,发现会自动断开,查看日志如下 2021-04-30 10:34:02.404 ERROR 153322 --- [n io -8088-exec-7] com.yxc.imapi.core.WebSocketServer : 发生错误:null,Sess io n ID: 1e java . io . EOF Exception at org.apache.tomcat.util.net.N io End point$N io SocketWrapper.fillR
这个错误通常是因为缺少 OkHttp 库的依赖所导致的。请确保在您的项目中添加了 OkHttp 库的依赖。 在 Gradle 中,您可以添加以下代码来添加 OkHttp 库的依赖: implementat io n 'com.squareup. okhttp 3: okhttp :4.9.0' 如果您正在使用 Maven,请将以下代码添加到您的 pom.xml 文件中: <dep end ency> <groupId>com.squareup. okhttp 3</groupId> <artifactId> okhttp </artifactId> <vers io n>4.9.0</vers io n> </dep end ency> 请注意,版本号可能会有所不同,具体取决于您正在使用的版本。
nginx问题排查: upstream prematurely closed connection while reading response header from upstream 27518 nginx问题排查: upstream prematurely closed connection while reading response header from upstream mentcide: 后续问题解决了吗 nginx问题排查: upstream prematurely closed connection while reading response header from upstream 点点教程: 我也没找到问题,不过我的情况是 在一些服务器上 指定的请求会一直出现,而其他请求又不会 服务器都是linux 而且是docker部署的 唯一的可能性就是 nginx上面的某个配置问题 我用的是宝塔 还有一个特点是 出这个问题的服务器又多个ip nginx问题排查: upstream prematurely closed connection while reading response header from upstream 明知你是错的人: 博主,后续有找到问题么,为什么后端会断开 CXF导致的JVM MetaSpace OOM问题 夜幕下的尖椒: 楼主能给个参考代码吗? CXF导致的JVM MetaSpace OOM问题 夜幕下的尖椒: 你这边是怎么解决这个问题的呢?