IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 解决Java中的java.io.IOException: Broken pipe和java.io.IOException: Connection reset by peer -> 正文阅读

[PHP知识库]解决Java中的java.io.IOException: Broken pipe和java.io.IOException: Connection reset by peer

?最近项目上出现了java.io.IOException: Broken pipe问题,后边,又出现了org.apache.catalina.connector.ClientAbortException: java.io.IOException: Connection reset by peer问题,其实,找到原因后,都是一个问题引起的。

错误信息

前端

浏览器/小程序接口返回报错信息:
net::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (OK)

后端

?出现问题后,先看了下日志,第一眼看到的事:
? java.io.IOException: Broken pipe报错,然后,分析了下,大概的意思是,前端调用然后因为某种原因,和后端服务器断开了。但是,从看到的结果,可能不是直接报错原因。
? 然后,自己尝试用wifi调用,有的时候可以,有时报错,用手机4G试了了,一直报错,所以,怀疑是因为数据量大导致的断开,然后看了下日志,报错:org.apache.catalina.connector.ClientAbortException: java.io.IOException: Connection reset by peer。

原因

怀疑就是数据量大,导致的前后端通讯断开,所以,怀疑是nginx配置的有问题,所以配置下nginx转发的限制。

解决:

修改nginx的配置文件 nginx.config

#设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffer_size 1024k; 
#proxy_buffers缓冲区,网页平均在32k以下的设置
proxy_buffers 16 1024k;
#高负荷下缓冲大小(proxy_buffers*2)
proxy_busy_buffers_size 2048k; 
#设定缓存文件夹大小,大于这个值,将从upstream服务器传
proxy_temp_file_write_size 2048k;

重启nginx

nginx -t
nginx -s reload

解决了。

java.io.IOException: Broken pipe学习

?既然,我已经查问题到这了,那就研究下Broken pipe

认识

pipe是管道的意思,管道里面是数据流,通常是从文件或网络套接字读取的数据。

当该管道从另一端突然关闭时,会发生数据突然中断,即是broken。

对于文件File来说,这可能是文件安装在已断开连接的光盘或远程网络上。

对于socket来说,可能是网络被拔出或另一端的进程崩溃。

在Java中,没有具体的BrokenPipeException。

将此类错误包含在另一个异常,例如java.io.IOException:Broken pipe

分析和解决

分析
1、客户端请求服务器数据,服务器突然挂了;
2、客户端请求服务端数据,服务端正常返回,凡是客户端由于超时等原因断开。
当然,通过上边的分析,我系统出现的问题,是服务器返回异常了,nginx端因为数据量超限制,关闭了通信连接,导致的前端报错。

压测
如果,不是显而易见的情况,需要,我们自己压测下,看下问题究竟出在哪里了
是DB连接数,通讯问题,程序问题,还是其他中间件使用问题。

解决
可能存在的解决方式
服务端:
1、查看是否有负载或者代理,是否因为中间件的问题,例如:nginx
2、是否因为程序导致的时间过长,这中情况,原因有可能很多了
?数据库连接数,RPC通讯,HTTP通讯等,看看修改一些连接数或者连接时长
客户端:
1、延长客户端超时时间,当然,不能太牺牲客户的体验

当然,问题都是千奇百怪的,每个人遇到的可能不同,所以,即供参考。。。

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-09-14 13:05:46  更:2021-09-14 13:06:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 1:07:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码