压测大致分为两种,一种负载压测,另一种为并发压测,以下压测是并发压测。
先说一下压测的前置条件。一台window服务器(公司买的阿里云服务器)16c,32g。另一方面就是准备了2个pod 1c2g,tomcat配置如下:
- "/usr/bin/java" - "-Xms2048m" - "-Xmx2048m" - "-Dserver.tomcat.connection-timeout=30000" - "-Dserver.tomcat.max-connections=10000" - "-Dserver.tomcat.accept-count=1000" - "-Dserver.tomcat.max-threads=500" - "-Dserver.tomcat.min-spare-threads=10"
压测条件:
压测结果-聚合报告如下:
说一下压测过程中遇到的问题:(这里是重点,因为这个问题不解决,jmeter一直压不上去)
问题一:带宽问题。处理方法:升级压测服务器带宽
压测的时候,TPS最高保持在300/sec,无论是升级pod配置还是增加pod数量,都不能有效处理。通过监测window服务器的带宽,发现最高为200Mb/s,已经为服务器的最高带宽。服务器带宽有瓶颈问题。处理办法:升级服务器带宽为1Gb/s,通过观察,峰时流量可达到500Mb/s,问题解决。
问题二、压测时jmeter占用服务器端口太多,jmeter报错。处理方法:修改window服务器注册表,修改对应参数
压测的时候,TPS一开始很高,然后逐步降低,而且开始有异常,jmeter察看结果树,错误信息如下:jmeter Response code:Non HTTP response code: java.net.BindException
jmeter Response message:Non HTTP response message: Address already in use: connect
经过查询,感觉是jmeter端口被占用的原因,参数如下帖子:https://www.zhankr.net/131291.html
修改了window服务器注册表信息
注册表目录:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
右键新建参数(DWORD),并设置值。
l MaxUserPort 十进制 65534
l TcpTimedWaitDelay 十进制 30
l KeepAliveTime 006ddd00
l KeepAliveInterval 000003e8
l MaxDataRetries 5
修改完毕后,重启window服务器,再次压测,不再出现问题,结果正常。