zoukankan      html  css  js  c++  java
  • jmeter并发上传文件,服务器返回Connection reset by peer异常

    问题描述

    群里小伙伴在做并发上传文件的时候,大约到30并发量左右,响应时间就变得特别长。从服务端的tomcat可以看到大量的错误日志。报错如下

    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
    

    问题分析

    Connection reset by peer的意思是在做数据读取的时候,另一端的socket突然强行中断了,才返回这个错误
    中断的原因大概有几种
    1.请求服务器数据的时候,服务器突然挂了
    2.请求服务器数据的时候,强行手动停止连接
    3.处理的报文过大,超出了接收缓冲区的尺寸,导致数据包丢失
    4.处理时间过长,触发tomcat超时直接结束进程
    5.tcp重试次数过多,直接触发socket连接中断

    再结合下面这段错误日志,基本能锁定问题
    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
    

    pipe是管道,也就是数据流,或者从文件或socket套接字读取的数据。 当socket的另一端突然关闭,会导致数据突然中断,即是broken
    这一段错误很明显能看出,socket一端在读取远端的响应数据时,被强行中断了。
    解决问题的思路有两块。一是增加接收缓冲区的空间,二是增加tomcat和tcp的超时时间
    tcp_wmem【接收缓冲区】
    tcp_rmem【发送缓冲区】
    tcp_mem【tcp内存】
    net.ipv4.tcp_fin_timeout【fin超时时间】

    结果

    优化之后,问题得到解决

  • 相关阅读:
    Hbase写数据,存数据,读数据的详细过程 分类: B7_HBASE 2015-03-15 20:11 117人阅读 评论(0) 收藏
    机器学习(十四):深度学习梯度优化算法(SGD SGD-M NAG AdaGrad RMSProp Adam )
    机器学习(十三):卷积神经网络(CNN)
    机器学习(十一):FP增长(FP-growth)
    机器学习(十):Apriori算法
    Gulp命令自动生成精灵图
    esLint参数设置
    js 监控iframe URL的变化
    React+Redux学习笔记:React+Redux简易开发步骤
    React组件实现越级传递属性
  • 原文地址:https://www.cnblogs.com/Zfc-Cjk/p/15250337.html
Copyright © 2011-2022 走看看