JMeter入门介绍 (4)

原因: 由于linux分配的客户端连接端口用尽,无法建立socket连接所致,虽然socket正常关闭,但是端口不是立即释放,而是处于 TIME_WAIT 状态,默认等待60s后释放。
查看linux支持的客户端连接端口范围,也就是28232个端口。cat /proc/sys/net/ipv4/ip_local_port_range,端口范围:32768 - 61000。

解决:
1.调低端口释放后的等待时间,默认为60s,修改为15~30s。echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
2.修改tcp/ip协议配置,通过配置/proc/sys/net/ipv4/tcp_tw_reuse,默认为0,修改为1,释放TIME_WAIT端口给新连接使用:echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse
3.修改tcp/ip协议配置,快速回收socket资源,默认为0,修改为1。echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle

即总共需要执行如下命令:

$ echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse $ echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle $ echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout

另外,如果非root用户执行上述命令时可能会遇到权限错误:

$ echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse bash: /proc/sys/net/ipv4/tcp_tw_reuse: Permission denied

甚至在命令之前加上sudo再执行也依然报错:

$ sudo echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse bash: /proc/sys/net/ipv4/tcp_tw_reuse: Permission denied

此时应该通过另外的方式执行:

$ sudo bash -c \'echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse\' $ sudo bash -c \'echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle\' $ sudo bash -c \'echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout\'

Q2: 使用JMeter发送POST请求时中文参数在服务器端接收到时为乱码

解决: 在Jmeter中设置“Content-encoding”为:utf-8 。

【参考】
JMeter基础之一 一个简单的性能测试
https://www.testwo.com/article/357 使用JMeter进行负载测试——终极指南
JMeter执行压测输出HTML图形化报表(二)
https://my.oschina.net/ydsakyclguozi/blog/536416 Jmeter中的几个重要测试指标释义
https://moonbingbing.gitbooks.io/openresty-best-practices/flame_graph.html 火焰图
https://my.oschina.net/shichangcheng/blog/1560864 JMeter 进行压力测试
https://blog.csdn.net/wwq_1111/article/details/59512546 JMeter压力测试遇到的问题汇总
https://www.infoq.cn/article/k9kx0RxEbhht*iluT9iV 推荐几款常用的性能测试工具
https://www.edureka.co/blog/what-is-software-testing/ 涉及软件测试的文章博客
JMeter报错the target server failed to respond--JMeter的坑
https://www.jianshu.com/p/130c7fddeddf Jmeter-使用Stepping Thread Group插件来设置负载场景
jmeter压力测试报告 - DEMO

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgdszd.html