Jmeter压测 - yiyixiaozhi/readingNotes GitHub Wiki


title: Jmeter压测 date: 2020-01-21 description: Jmeter与TCP连接分析 categories: - 工具 tags: - Jmeter - TCP - netstat

查看TCP连接状态及端口占用情况

查看TCP连接状态:

# netstat -n | awk '/^tcp/ {++y[$NF]} END {for(w in y) print w, y[w]}'
CLOSE_WAIT 1
ESTABLISHED 59
TIME_WAIT 12

# netstat -an | awk '/^tcp/ {++y[$NF]} END {for(w in y) print w, y[w]}'
CLOSE_WAIT 1
ESTABLISHED 59
TIME_WAIT 12

查看服务器可用端口号情况:

cat /proc/sys/net/ipv4/ip_local_port_range

如何减少time_wait数量

vi /etc/sysctl.conf
编辑文件,加入以下内容:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30

然后执行 /sbin/sysctl -p 让参数生效。 net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭; net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭; net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。 net.ipv4.tcp_fin_timeout 修改系統默认的 TIMEOUT 时间

存在大量处于TIME_WAIT状态的连接 https://help.aliyun.com/knowledge_detail/41334.html#TxtER 提示:此处涉及的内核参数如下。 net.ipv4.tcp_syncookies net.ipv4.tcp_tw_reuse net.ipv4.tcp_tw_recycle net.ipv4.tcp_fin_timeout

常见问题

云服务器中存在大量处于TIME_WAIT状态的连接

原因分析 首先通过调用close()发起主动关闭,在发送最后一个ACK之后会进入time_wait的状态,该发送方会保持2MSL时间之后才会回到初始状态。MSL值是数据包在网络中的最大生存时间。产生这种结果使得这个TCP连接在2MSL连接等待期间,定义这个连接的四元组(客户端IP地址和端口,服务端IP地址和端口号)不能被使用。

解决方法 通过netstat或ss命令,可以看到大量处于TIME_WAIT状态的连接。 执行如下命令,查看TIME_WAIT状态的连接数量。 netstat -n | awk ‘/^tcp/ {++y[$NF]} END {for(w in y) print w, y[w]}’ 执行如下命令,编辑系统内核配置。

vi /etc/sysctl.conf

# 修改或加入以下内容
net.ipv4.tcp_syncookies = 1 
net.ipv4.tcp_tw_reuse = 1 
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
执行命令如下命令,使配置生效。
/sbin/sysctl -p 

修改响应体乱码: D:\portableSoft\apache-jmeter-5.2.1\bin\jmeter.properties sampleresult.default.encoding=UTF-8

⚠️ **GitHub.com Fallback** ⚠️