• jmeter测试文件上传接口报错:connection reset by peer: socket write error


    最近在对文件上传接口性能测试时,设置150线程数并发时,总会出现以下错误:connection reset by peer: socket write error

    在网上搜索了一下,得到的原因有这些:

    服务器的并发连接数超过了其承载量,服务器会将其中一些连接Down掉;
    客户关掉了浏览器,而服务器还在给客户端发送数据;
    浏览器端按了Stop;

    和开发一起讨论了半天,谁都说不出个所以然来。开发说后台Tomcat没报错,不是代码的问题,会不会是工具的问题,于是乎找到网上一篇文章:

    Jmeter遇到线程链接被重置(Connection reset by peer: socket write error)的解决方法

    根据文章对jmeter进行了相应配置也没用。

    后来还是一位开发大神找到了错误原因,原来,当jmeter报错时,后台Tomcat没报错,但是后台Nginx报错了!!!由于服务器只开通了80端口,开发人员使用Nginx将应用的端口进行了反向代理,反向后的端口为80,从而使测试机可以访问应用。

    测试是否确实是Nginx的问题:将应用端口直接改为80,关闭Nginx后测试,结果显示不再报错,这证明这个错误确实是Nginx引起的。测试后将端口改回来。

    在D: ginx-1.15.0logserror.log中报错信息如下:

    malloc(31457280) failed (8:Not enough storage is available to process this command)

    网上很多人说是Nginx内存不足了,但是也没有人具体说怎么解决。尝试修改了Nginx的一些配置也没有用(可能是没改到点子上)。

    后来将Nginx负载均衡改为Apache负载均衡,发现错误更多性能更差了。

    最后还是大神将Nginx 32位改为了Nginx 64位(在官网没找到64位的,还是在某个网站上下载的)后,发现性能大大提升。

    测试发现,并发300线程数时,jmeter都没报错!!!

    当然长时间并发时,偶尔还是会有connection reset by peer: socket write error这个错误发生,但是总的来说接口性能已经大大提升了。

    虽然还是没有完全搞清楚这个错误的发生原因以及解决办法,但总归是有点进步,在此记录,也给各位遇到此问题的朋友一点思路。

  • 相关阅读:
    java采用zip方式实现String的压缩和解压缩CompressStringUtil类
    java注解方式解析xml格式
    intellij 出现“Usage of API documented as @since 1.8+”的解决办法
    mac zsh环境配置java_home环境变量
    git常用命令汇总
    dubbo启动报错failed to bind nettyserver on
    mybatis,genarate自动生成代码
    sonarLint--强大的代码审查工具(插件)
    zookeeper安装与配置
    python小记
  • 原文地址:https://www.cnblogs.com/zhengna/p/9466928.html
Copyright © 2020-2023  润新知