Jmeter 做性能测试遇到了一些问题,就记录下了问题及其解决的方法。

问题1:Jmeter并发超过 300 报错

“java.net.SocketException:Socket closed”,300个 request 请求之后几个请求报错,起初以为是服务端的问题,查看服务端状态,cpu 和内存使用率都很低,cpu 空闲达到98%以上,证明请求没有发送到服务端,查看日志也没有报错信息,证明不是服务端的问题,然后查看报错的响应,发现是 Jmeter 的报错。

原因:JMeter 发送 http 请求时,一般默认选择 use keepAlive 长连接协议,默认勾选该选项,其配置 jmeter.properties 中的空闲等待时间设置默认被注销,也就是不会等待,一旦连接空闲,则立马断开连接,导致压测中出现了事务失败情况,要解决此问题,需要设置空闲等待时间。
设置时需将圈起来的取消勾选!
在这里插入图片描述
解决方法:修改 jmeter.properties 文件中空闲等待时间,打开文件,并找到httpclient4.idletimeout ,将值设置为 60000 单位为毫秒也就是60秒,并将该行注释去掉并保存文件,重新 Jmeter 后配置方生效,后面我即使并发到了2000也没有报 Socket closed 的错误。
在这里插入图片描述
问题二:Jmeter 单机设置的并发用户数不要超过2000,实战用到的压测机8核CPU、16G内存,为了验证Jmeter单机支持的最大并发用户,先设置5000并发 Jmeter运行后直接报错,机器内存不足。

将并发用户数调整2000 可正常执行,但 Jmeter 官方建议,测试 web 应用 单机并发 350-500个用户,测试后端 API 性能压测机8核CPU + 64位操作系统,单机并发 900-1100用户。做性能压测试时可依照官方建议设定单机并发用户数,若压测机器配置较高,可适当提升并发用户量,但最好不要超过2000并发用户。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐