原文由周小丽发表于TesterHome社区,点击原文链接可以和作者直接交流
如果 jmeter 达不到预期的性能指标,可查看压测机器的性能,是否因为内存、网络、cpu 占用导致的瓶颈。
一、端口不够用
压测的线程数过多时,或者线程没有及时释放,会导致 TCP/IP 连接端口已达到最大限制,jmeter 会报错
【报错信息】Non HTTP response code:java.net.BindException
【原因分析】windows 提供给 TCP/IP 连接的端口号是 1024-5000,并且要四分钟左右循环回收,这就导致我们短时间内频繁调用大量请求时,端口号被占满
【解决方案】修改系统的最大端口连接数
TCP 客户端和服务器连接时,客户端必须分配一个动态端口,默认情况下这个动态端口的分配范围为 1024-5000 ,也就是说默认情况下,客户端最多可以同时发起 3977 个 Socket 连接。我们可以修改如下注册表来调整这个动态端口的范围
[HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Tcpip \Parameters]
MaxUserPort = 5000 (Default = 5000, Max = 65534)
二、线程数
【异常现象】大量请求出现连接失败,或者压测的错误率异常高,但服务器性能并没上去
【原因分析】线程数已达到瓶颈
【解决方案】循环创建线程,勾选 keep-alive(一般默认是勾选的),可复用线程,即一个 http 请求处理完之后,另外一个 http 请求会从