connection reset by peer, socket write error问题排查
2018-03-15更新:弄明白connection reset产生的原因,见重新分析connection reset by peer, socket write error错误原因
在开发文件上传功能时遇到了connection reset by peer, socket write error的错误,排查废了一番功夫,记录一下。
在网上搜索了一下,得到的原因有这些:
- 服务器的并发连接数超过了其承载量,服务器会将其中一些连接Down掉;
 - 客户关掉了浏览器,而服务器还在给客户端发送数据;
 - 浏览器端按了Stop;
 
但是看了服务器,不太可能;网络状况了也挺好(测试环境而已)。
跟浏览器也没关系,因为这里上传文件使用的是apache httpclient在上传文件,而且timeout都设置比较长。
最后分析到的问题原因,出在服务端上。服务端是这么处理的:上传文件时在header里含有了文件信息,上传文件成功,记录文件相关信息在DB;如果再次上传这个文件,根据header的文件信息在DB判断是否已经上传,如果确认是重复文件,则直接返回“文件重复”。(这个业务设计有点bug,暂时忽略)
但是现在却遇到重复上传时,客户端httpclient报了“connection reset by peer, socket write error”的错误。
是由于在重复上传时,服务端只取了header就判断了文件重复直接response了,这个时候客户端还在“欢快”的传输文件呢,而服务端直接response把连接关闭了,所以客户端就懵逼了,报了错误。
这个问题暂时还没有找到技术上如何解决(如果找到,后面再补充),所以在业务上进行解决的。在客户端遇到SocketException时,尝试重新上传前,先查询服务端是否已经完成了此文件的上传,如果已经存在,则不用重复上传了,也就可以避免因为重复上传导致的问题,毕竟重复上传也是为了保证在网络不佳时能补偿。
connection reset by peer, socket write error问题排查的更多相关文章
- 重新分析connection reset by peer, socket write error错误原因
		
上次写<connection reset by peer, socket write error问题排查>已经过去大半年,当时把问题"敷衍"过去了. 但是此后每隔一段时 ...
 - spring+ibatis问题1—— 程序报错:java.sql.SQLException: Io 异常: Connection reset by peer, socket write error; ”或“java.sql.SQLException 关闭的连接”异常
		
转自:http://blog.sina.com.cn/s/blog_1549fb0710102whz2.html spring+ibatis程序测试时报错:java.sql.SQLException: ...
 - jmeter测试文件上传接口报错:connection reset by peer: socket write error
		
最近在对文件上传接口性能测试时,设置150线程数并发时,总会出现以下错误:connection reset by peer: socket write error 在网上搜索了一下,得到的原因有这些: ...
 - Error -27780: Connection reset by peer: socket write error
		
Problem Description: Error: "-27780: read to host failed: [10054] Connection reset by peer" ...
 - Jmeter遇到线程链接被重置(Connection reset by peer: socket write error)的解决方法
		
做性能测试的时候遇到一个很奇怪的问题,多线程的计划,有一个线程第一次能跑过,第二次确跑不过,单独跑这个线程跑多少次都没有问题,把思考时间改短也没有问题,唯独出现在特定的状态下,特定状态是啥,也不得而知 ...
 - Connection reset by peer: socket write error 连数据库出现改错
		
1.网络原因 2.从池中获取连接后没有释放到池中导致的
 - Connection reset by peer问题分析
		
extremetable导出excel,弹出一个下载窗口,这时不点下载而点取消,则报下面的异常: ClientAbortException Caused by: java.net.SocketExce ...
 - atitit.故障排除------有时会错误com.microsoft.sqlserver.jdbc.SQLServerException: Connection reset by peer: soc
		
atitit.故障排除------有时会错误com.microsoft.sqlserver.jdbc.SQLServerException: Connection reset by peer: soc ...
 - Connection reset by peer的常见原因及解决办法 RST  大文件上传
		
Connection reset by peer的常见原因及解决办法 Connection reset by peer的常见原因 - 简书 https://www.jianshu.com/p/263e ...
 
随机推荐
- ApplicationContex是干啥的
			
ApplicationContext就是一个百宝箱 ApplicationContext是Spring的核心,Context我们通常解释为上下文环境,我想用“容器”来表述它更容易理解一些,Applic ...
 - Delphi xe7 up1 调用android振动功能
			
Delphi xe7 up1 调用android振动功能 振动用到以下4个单元: Androidapi.JNI.App,Androidapi.JNIBridge,Androidapi.JNI.Os,A ...
 - java8之流的基本使用(二)
			
概述 流(stream())是java8的一个新特性,主要的作用就是将各种类型的集合转换为流,然后的方便迭代数据用的.例如: //将List类型的集合转换为流 list.stream() 转换为流之后 ...
 - linux 改变系统时间
			
date 查看系统时间 date -s 04/05/16 日期设置成2016年4月5日 date -s 15:03:32 日期设置成2016年4月5日15:03:32 上述两步可以直接写成这样一 ...
 - C# 抽象(3)
			
接上章: 抽象类中有抽象方法,那么可不可以有非抽象方法呢? 答案是可以的. abstract class Human { public abstract void Think(); public ab ...
 - 基于CAS的单点登录实战(1)-- 搭建cas服务器
			
公司有几个系统想做SSO,然后开始研究cas.系统是Centos7 搭建CAS服务器 cas的版本比较多,先在网上搜了一下各种教程配置经验.本来想搭建最新的CAS版本,然而为了快速部署,选择了网上教程 ...
 - phpstudy 部署php项目
			
网站根目录
 - gluster peer probe: failed: Probe returned with unknown errno 107解决方法
			
当在glusterfs中将服务器加到存储池中,及运行”gluster peer probe server”命令, 遇到peer probe: failed: Probe returned with u ...
 - loj#6436. 「PKUSC2018」神仙的游戏(NTT)
			
题面 传送门 题解 一旦字符串踏上了通配符的不归路,它就永远脱离了温暖的字符串大家庭的怀抱 用人话说就是和通配符扯上关系的字符串就不是个正常的字符串了比如说这个 让我们仔细想想,如果一个长度为\(le ...
 - Sql Server两个数据库中有一张表的结构一样,怎么快速将一张表中的数据复制到另一个表中
			
1,下面这句会把表2数据删除,然后把表1复制到表一,两表内容一样 SELECT * into 表2 FROM 表1 2,这句只追加,不删除表2的数据 insert into 表1 select * f ...