springboot max-http-header-size设置造成内存溢出

对测试环境的服务在进行压测的时候发现:


image.png

线程在处理程序的时候因为无法在堆中分配更多内存出现了OOM
通过jstat -gcutil pid 命令查看时发现jvm各区域的内存都满了,并且在不停的执行Full GC。
GC指令说明链接

image.png

第一步:使用jstack 导出服务的堆栈信息
jmap -dump:live,format=b,file=outfile.dump pid

第二步:使用jvisualvm 打开导出的文件

image.png

仔细查找会发现有个byte[]占用了88.2%的内存。
第三部:去掉配置,在压测就可以了
server.max-http-header-size=10240000
server.tomcat.max-http-post-size=-1
参考文档

需要注意一点的是,在不同版本的tomcat下不限制传输数据大小的场景时,对maxPostSize的值设置并不是相同的!

具体差别:
tomcat7.0.63之前 给maxPostSize设置小于等于0的值都可表示不限制
tomcat7.0.63及之后 给maxPostSize设置小于0的值可表示不限制
如果在tomcat7.0.63之后设置maxPostSize=“0”,那将会获取不到传输的数据。

你可能感兴趣的:(springboot max-http-header-size设置造成内存溢出)