在SpringBoot项目中,我们可以通过如下配置来设置header的大小:
server.max-http-header-size=102400
但如果此参数设置不好,便会引来OOM等相关问题,特别是并发的时候。
max-http-header-size使用场景
该参数用来设置http请求头的大小,默认值为8k,也就是8 * 1024的大小。
那么,什么时候会配置max-http-header-size参数呢?
比如,当我们上传图片时采用multipart形式上传文件时,对应的配置如下:
spring.http.multipart.max-file-size=20Mb
spring.http.multipart.max-request-size=60Mb
但这个配置针对base64形式上传图片就不适用了,需要如下配置:
server.maxHttpHeaderSize=102400
server.maxHttpPostSize =102400
但这样的配置就很容易造成OOM。
造成OOM的原因
之所以该参数配置过大,在并发的时候会造成OOM是因为Http请求时内存分配的问题。
比如将max-http-header-size的大小配置为100M,那么并发量100时,那么内存分配就是100* 100,将近