解决java.io.IOException: Broken pipe的报错


  又好久没写博客了,说好的每周更新两篇博客的计划又落空了🤣不管了,从这周开始我将会坚持每周更新两篇技术博客,欢迎大家积极监督!好了,废话不多说,下面正式开启我的博客之旅。

  这周一碰到了一个生产bug:拉取京东的第三方账单时居然拉取失败了!当时自己马上去阿里云查看了下生产日志,看到了如下的报错:

**加粗样式**
  从如上的图中,这明显是报了 java.io.IOException: Broken pipe这个错误,第一次见到这个报错的自己有点被整懵圈了,但是拼接着自己过往的经验,自己初步猜测到肯定是哪个网络环节出现超时了😂,为了解决自己的问题,自己百度了下,发现还真有一些哥们也是遇到了跟自己同样的问题,我感觉他们讲得挺好的,在这里引用下他们的话:

出现“Broken pipe ”可能的情况:
1、客户端请求服务器数据,服务器突然挂了;
2、客户端请求服务端数据,服务端正常返回,但客户端由于连接超时或者其他原因断开导致服务端无返回通道导致。

  根据这个老哥所描述的原因,再结合着自己的程序代码进行分析。首先在自己目前的系统中有pay-service和thirdparty-pay-service两个服务,其中pay-service主要是负责业务逻辑的编写, thirdparty-pay-service则主要负责跟第三方平台(如饿了么、京东、美团、微信等等)进行交互。具体流程图如下所示:
在这里插入图片描述
  当时出现的问题是在thirdparty-pay-service请求拉取了京东账单后在返回给pay-service时报了超时,经过仔细排查,终于发现原来是pay-service设的ReadTimeout为30000毫秒(即30秒),但thirdparty-pay-service从请求京东到全部响应回来总共耗了50秒。哈哈,这不报错才怪的呢!所以这也对应了那位老哥所说的第2个原因,即客户端(pay-service)请求服务端数据(thirdparty-pay-service),服务端正常返回,但客户端由于连接超时或者其他原因断开导致服务端无返回通道导致。

  既然都知道了原因,那么就完全可以动手将它解决啦!修改代码后的代码如下所示:
在这里插入图片描述  如上图所示,为了更稳点,于是我将@OpenApiReadTimeout(自定义注解)中的readTimeout值由原先的30000(30秒)直接调成了100000(100秒),经过一调试测试后发现就不再出现那个报错了!!!

  好了,今天的博客就写到这里了。如果大家有什么更好的解决想法,欢迎积极与我讨论!谢谢!

  • 22
    点赞
  • 82
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 20
    评论
java.io.IOException: Broken pipe是一个异常,表示管道中的数据流被突然关闭导致数据中断。这个异常通常在读取文件或网络套接字的数据时出现。解决这个问题的方法取决于具体的情况和应用程序的要求。 以下是一些可能的解决方法: 1. 检查网络连接:确保网络连接稳定,没有断开或中断的情况。如果是网络问题导致的断开,可以尝试重新连接网络或检查网络配置。 2. 调整超时时间:如果在网络通信中出现Broken pipe异常,可以尝试调整超时时间,使其更适应实际情况。可以增加超时时间,以便给请求更多的时间来完成操作。 3. 优化代码:检查代码中是否有资源泄漏或未关闭的连接。确保在使用完数据流后及时关闭它们,以防止出现异常。 4. 重新尝试操作:如果Broken pipe异常是由于网络问题导致的,可以尝试重新执行操作。在发生异常后,重新建立连接并重试之前的操作。 5. 增加线程池大小:如果在高并发情况下出现Broken pipe异常,可能是由于线程池大小不足导致的。可以考虑增加线程池的大小,以提供足够的线程来处理请求。 请注意,这些解决方法只是一些可能的方案,具体解决方法需要根据具体情况进行调整。建议在解决问题之前仔细分析异常的原因,并进行相应的调试和测试。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [关于java.io.IOException: Broken pipe解决办法。](https://blog.csdn.net/ChenLong_0317/article/details/103860269)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Melo_FengZhi

您的鼓励对我就是巨大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值