版本:Jmeter5.1.1
1、Java heap space OutOfMemoryError
jmeter压测一段时间后,可能出现溢出情况,根据实际情况修改一下JMeter的jmeter.bat文件的HEAP和NEW的参数即可。
if not defined HEAP (
rem See the unix startup file for the rationale of the following parameters,
rem including some tuning recommendations
set HEAP=-Xms1024m -Xmx4096m
set NEW=-XX:NewSize=512m -XX:MaxNewSize=1024m
)
2、No buffer space available (maximum connections reached?)
从网上浏览了大量的帖子,发现基本上都说是因为机器端口号用尽导致tcp无法申请新的端口去建立连接。查看机器端口号使用情况,如果大量的端口处于TIME_WAIT状态,初步估计可能是客户端每次去请求服务端都创建了一次tcp连接,使用完就关闭连接,但是tcp协议中如果客户端主动关闭,为了确保发送的报文不影响下一次连接,主动关闭的一方需要停留在TIME_WAIT状态2*MSL(Max Segment Lifetime)。当并发高的时候,就会产生大量TIME_WAIT,而处于TIME_WAIT状态的端口是不能马上去建立新的连接的,这就导致No buffer space available (maximum connections reached?)这个异常。
可能解决方案:
1、重启。排除硬件导致的温恩提
2、调整tcp/ip的延迟等待时间参数,可以减少状态为:time_wait的连接:【TcpTimedWaitDelay】调小,例如:30s、
以Windows为例,调整tcp/ip:
1>.注册表编辑器:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
2>.添加参数:
(1)新建
值名称:MaxUserPort
值类型:DWORD
值数据:65534(十进制)
(2)新建
值名称:MinUserPort
值类型:DWORD
值数据:5000(十进制)
(3)新建
值名称:TCPTimedWaitDelay
值类型:DWORD
值数据:30(十进制)
3、调整内存,建议加大,并查看磁盘空间是否足够。
未完待续。