首页 > Web开发 > 详细

项目中错误设置max-http-header-size参数导致内存激增

时间:2019-11-06 10:26:02      阅读:863      评论:0      收藏:0      [点我收藏+]

2019/11/05日对项目压测时出现服务内存激增导致OOM。

压测线程是100个,瞬间服务的内存占用就跑到了4个G。对服务的堆进行dump

jmap -dump:format=b,file=heap.hprof <pid>

技术分享图片

 

 发现主要是byte[]占用了88.2%的内存。

那么大的一个数据,考虑查找最大的对象来评判是否存在异常。

技术分享图片

 

 技术分享图片

 

 对相关对象进行检索发现,该类对应的实例就直接占用了1个多G的内存。

通过后续的搜索发现是spring 中的配置信息将max-http-header-size设置为了10M,正好与每一个headbuffersize匹配。此处就应该知道是由于不正确的参数配置导致了并发情况下的内存激增。

检索tomcat的文档,发现该参数的默认值是4KB。

技术分享图片

 

 后续调整该参数后问题得到解决。因为使用token做认证,默认设置的头大小放不下,后续往上涨了4K,变为8k后能够解决token过长无法存储以及内存激增问题

项目中错误设置max-http-header-size参数导致内存激增

原文:https://www.cnblogs.com/guolaoshi/p/11803378.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!