jmeter并发上传文件,服务器报错
报错内容:
org.apache.catalina.connector.ClientAbortException: java.io.IOException: Connection reset by peer at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:356) at org.apache.catalina.connector.OutputBuffer.appendByteArray(OutputBuffer.java:785) at org.apache.catalina.connector.OutputBuffer.append(OutputBuffer.java:714) at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:391) at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:369) at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:96) at org.springframework.security.web.util.OnCommittedResponseWrapper
错误日志如下:
org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe
at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:321) at org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:284) at org.apache.catalina.connector.CoyoteOutputStream.flush(CoyoteOutputStream.java:118) at org.springframework.security.web.util.OnCommittedResponseWrapper
原因分析:
Connection reset by peer的意思是在做数据读取的时候,另一端的socket突然强行中断了,才返回这个错误
中断的原因大概有几种
1.请求服务器数据的时候,服务器突然挂了
2.请求服务器数据的时候,强行手动停止连接
3.处理的报文过大,超出了接收缓冲区的尺寸,导致数据包丢失
4.处理时间过长,触发tomcat超时直接结束进程
5.tcp重试次数过多,直接触发socket连接中断
pipe是管道,也就是数据流,或者从文件或socket套接字读取的数据。 当socket的另一端突然关闭,会导致数据突然中断,即是broken
这一段错误很明显能看出,socket一端在读取远端的响应数据时,被强行中断了。
解决问题的思路有两块。一是增加接收缓冲区的空间,二是增加tomcat和tcp的超时时间
tcp_wmem【接收缓冲区】
tcp_rmem【发送缓冲区】
tcp_mem【tcp内存】
net.ipv4.tcp_fin_timeout【fin超时时间】