本文介绍: 到底什么是断管?简单来说,Broken Pipe 意味着一台机器正在尝试从管道读取数据或向管道写入数据,而管道另一端的机器已经死亡或终止。现在,由于连接已关闭,应建立新连接以进一步传输数据,否则数据传输将停止。此问题的最常见原因之一是客户端在执行任何操作(如加载页面或下载附件)时关闭打开的连接。当使用 Nginx 之类的代理/负载均衡器(例如关闭 Web 浏览器甚至简单地取消下载)或连接速度很慢时,强制关闭某些连接也会发生这种情况。一个简单的场景:浏览器向服务器请求资源,作为响应,服务器向浏览器返回响应。
到底什么是断管?
简单来说,Broken Pipe 意味着一台机器正在尝试从管道读取数据或向管道写入数据,而管道另一端的机器已经死亡或终止。现在,由于连接已关闭,应建立新连接以进一步传输数据,否则数据传输将停止。
它是如何发生的?
此问题的最常见原因之一是客户端在执行任何操作(如加载页面或下载附件)时关闭打开的连接。当使用 Nginx 之类的代理/负载均衡器(例如关闭 Web 浏览器甚至简单地取消下载)或连接速度很慢时,强制关闭某些连接也会发生这种情况。
一个简单的场景:浏览器向服务器请求资源,作为响应,服务器向浏览器返回响应。如果在服务器向浏览器发送响应时用户关闭了浏览器怎么办?服务器与浏览器之间的连接意外关闭。然后这会导致 Broken Pipe,该异常被称为 java.io.IOException: Broken Pipe in Java。
这也可能发生在任何中断客户端和服务器之间连接的事情上,包括性能问题甚至网络间歇性问题。
导致此异常的可能因素:
最终用户数量
由于Broken Pipe的主要原因之一是用户的行为(在服务器完成发送响应之前意外关闭活动浏览器会话),最终用户数量的增加增加了Broken Pipe的机会。
重响应负载
服务器超时
断管异常是危险信号吗?
减少 api 响应负载
增加服务器超时
处理 java.io.IOException: Broken Pipe
查找 Resteasy 分发 jar
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。