jmeter测试接口-打开很多TCP的连接数TIME_WAIT状态(Linux环境)导致报错的解决方法

  一 发现问题:

  服务器是Linux系统,用jmeter测试接口,发现打开很多的TCP连接,[[email protected] bin]# ulimit -n 65535用这个命令设置了总的连接数;进行压测的时候,连接数可能达到50000以上,很容易报错;查看各个状态的TCP个数:
netstat -an | awk ‘/^tcp/ {++s[$NF]} END {for(a in s) print a,s[a]}‘,发现连接状态TIME_WAIT的状态很多,(统计80端口连接数netstat -nat|grep -i 80|wc -l用这个统计也行)。而不报错的接口,打开的TCP连接数比较少,约在15000-25000这样。

  初步怀疑是tcp的TIME_WAIT状态太多了,导致连接的时间过长,系统的端口资源被长时间的占用,新的请求,又分配不到资源。

  二 解决方式:

  经过3天多的时间,终于找到了有效的解决方案,可以参考该微博:http://blog.oldboyedu.com/tcp-wait/:

在sysctl.conf配置文件中# vim /etc/sysctl.conf,修改成如下的配置:

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_timestamps = 1

再运行起来,TCP的连接数明显下降了,而且接口的TPC上升了,不容易报错,如下图所示:

时间: 2024-08-05 06:39:31

jmeter测试接口-打开很多TCP的连接数TIME_WAIT状态(Linux环境)导致报错的解决方法的相关文章

[Jmeter]打开jmeter.bat报错的解决方法

解决过程: 打开apache-jmeter-3.0的jmeter.bat时,报错如下: 查看报错信息,应该是属于环境变量配置问题. 因此加上jave_home的路径语句在jmeter.bat文件上: SET JAVA_HOME=C:\Program Files\Java\jdk1.7.0_51 发现依然报错: 经过思考,还是环境配置问题,再加上关于java的path语句: SET PATH=%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin 发现依然报错: 查看报错,应该是少

JMeter打开badboy保存的jmx文件报错的解决方法

无数小白童鞋总问这个问题,其实在做任何学习的时候都要注意版本的一致,不然就会出莫名其妙的问题.但这些看起来很低级的问题99%的人都不会去在意,而一味追求所谓的高级,实在不理解....唉 好了下面进入正题: 问题: 排查: badboy和jmeter版本不匹配.一般大家都用的是JMeter是3.1的,而badboy是2.0.5 解决方法: 把badboy升级到最新版,比如2.1.2即可.

Dynamics CRM 打开数据加密报错及修改用户邮件保存报错的解决方法

在项目里会碰到在修改用户的电子邮件时报错的问题 然后跑到数据管理里打开数据加密又是报错 解决上述问题只需要做下数据库的更改即可,把标志位置1即可,记得要重启下IIS才能生效 SELECT [ColumnName],[BitColumn] FROM [MSCRM_CONFIG].[dbo].[DeploymentProperties] WHERE ColumnName='DisableSSLCheckForEncryption' UPDATE [MSCRM_CONFIG].[dbo].[Deplo

Android Studio :enable vt-x in your bios security,已经打开还是报错的解决方法

quote: For Windows 10: First of all, install the intelhaxm-android.exe located in the folder SDK\extras\Intel\Hardware_Accelerated_Execution_Manager if it gives error during installation then try these solution. First all enable the virtualization fr

TCP/IP协议--TIME_WAIT状态存在的原因

1. 实际问题         初步查看发现,无法对外新建TCP连接时,线上服务器存在大量处于TIME_WAIT状态的TCP连接(最多的一次为单机10w+,其中引起报警的那个模块产生的TIME_WAIT约2w),导致其无法跟下游模块建立新TCP连接. TIME_WAIT涉及到TCP释放连接过程中的状态迁移,也涉及到具体的socket api对TCP状态的影响,下面开始逐步介绍这些概念. 2. TCP状态迁移        面向连接的TCP协议要求每次peer间通信前建立一条TCP连接,该连接可抽

TCP/IP详解--TCP连接中TIME_WAIT状态过多

转载自http://blog.csdn.net/yusiguyuan/article/details/21445883 TIMEWAIT状态本身和应用层的客户端或者服务器是没有关系的.仅仅是主动关闭的一方,在使用FIN|ACK|FIN|ACK四分组正常关闭TCP连接的时候会出现这个TIMEWAIT.服务器在处理客户端请求的时候,如果你的程序设计为服务器主动关闭,那么你才有可能需要关注这个TIMEWAIT状态过多的问题.如果你的服务器设计为被动关闭,那么你首先要关注的是CLOSE_WAIT. 原则

Jmeter录制脚本过程及报错的解决

两个报错:Could not create script recorder报错和您的连接不是私密连接报错 1.录制过程 * 打开jmeter * 点击Templated,选择Recoding模版 * 点击WorkBench节点下-->添加-->非测试元件-->HTTP代理服务器 http代理服务器是这个样子的 2.点击启动就开始报错了 报错信息: Could not create script recorder -see log for detail:>>非法选项: -ext

TCP/IP中TIME_WAIT状态详解

TIME_WAIT状态原理: 通信双方建立连接后,主动关闭连接的一方就会进入TIME_WAIT状态. 客户端主动关闭连接时,会发送最后一个ACK确认,然后就会进入TIME_WAIT状态,再停留2MSL,就会进入CLOSED状态. 接下来我们看一张图,来说明这一过程: 上图是TCP"四次挥手"的过程,相信你们都会很了解,下面我们来说说为什么要存在TIME_WAIT状态 TIME_WAIT状态存在的理由如下: (1)可靠地实现TCP全双工连接的终止 TCP协议在关闭连接的四次挥手中,最终的

【Python】用Python打开IE、谷歌等浏览器报错及解决办法

以IE浏览器为例: 当Python Shell输入下面代码时: >>> # coding=utf-8 >>> from selenium import webdriver >>> driver = webdriver.Ie() 报如下的错误: 后来网上查询得知,是因为Python没有安装相应的浏览器启动器,(可以参照[原文],以及大神分享的下载插件[地址]),注意下载时IE有32位\64位. 同样的道理,如果要启动IE或谷歌浏览器,也需要下载相关的插件