windows下Jmeter压测端口占用问题
1 前情提要
人脸识别项目中,云平台新增了人脸识别的校验接口。考虑到存在大量用户并发使用人脸识别功能登录的情况,需要对涉及到的接口进行压力测试(后续简称压测),来确保上线后的系统质量更稳定。
2 压测环境配置
压测发起设备:windows 10
网络:局域网
压测软件:Jmeter 5.0
压测系统内存:Ubuntu 4核8G
PHP 版本:php7.1.23
Nginx 版本:nginx1.14.0
MySQL版本:5.7.24
Redis: 开启
CDN:关闭
3 报错信息描述
压测的初期,在设置了 150qps/s 的并发数下压测几分钟后 Jmeter 就出现了如下报错。
JAVA.NET.BINDEXCEPTION: ADDRESS ALREADY IN USE: CONNECT
在这里插入图片描述
4 问题排查
开始考虑的方向是Nginx、PHP、MySQL做了相关限制导致线程被占用, 但是修改对应的配置后发现没有任何效果,该报错的还是报错。 查了一波资料,发现 windows 环境下的端口循环回收需要消耗2~4分钟。由此猜测可能是由于 windows下压测端口数有限,端口资源被占满,没有及时循环回收,导致报错。
5 初步解决之扩大端口数量
设置 windows下最大端口数 65534,尝试将端口资源数设置为最大