版本上线前,测试人员都会进行压测。本地,测试环境访问是没有问题的,但是一进行压测就内存溢出。
1.一开始以为测试环境分配的Jvmd的原因,于是就手动设置Jvm参数启动,命令如下:
nohup java -Xms4G -Xmx4G -jar xxxx.jar > xxxxx.log &
然而并没有解决。
我就直接改成加Return,直接返回,还是会内存溢出。
于是上网查资料
参考:https://blog.csdn.net/weixin_38631327/article/details/105942903
发现之前由于做图片上传,由于大图片上传问题,加了如下配置:
server:
tomcat:
max-http-post-size: 0
maxHttpHeaderSize: 102400000 ##这个的原因
maxHttpPostSize: 102400000
port: 8090
maxHttpHeaderSize
每次请求都会固定生成一个这么大的内存去接收请求头。
压测前把这个注释掉就行了,自己埋得坑啊。。。。
后面进行压测,时而报Address already in use: connect
错误。
查阅了相关资料后发现,是因为windows本身提供的端口访问机制的问题。
Windows XP提供给 TCP/IP链接的端口为 1024-5000,并且要四分钟来循环回收他们。就导致我们在短时间内跑大量的请求时将端口占满了。
解决方案为:
1.cmd中,用regedit命令打开注册表
2.在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters下,
1 .右击parameters,添加一个新的DWORD,名字为MaxUserPort
2 .然后双击MaxUserPort,输入数值数据为65534,基数选择十进制(如果是分布式运行的话,控制机器和负载机器都需要这样操作哦)
3.修改配置完毕之后记得重启机器才会生效