跳到主要内容

Gateway请求体内存溢出问题

问题复现

把图片的base64需要存到数据库,发现直接请求后端是可以的,但是如果从网关走,发现不行,跟请求体的限制有关。

image-20240918142627902

这里262144=256KB

Spring Cloud Gateway 默认没有明确限制请求体的大小,但会受到底层使用的 WebFluxReactor Netty 的限制。WebFlux 的默认内存缓冲区大小为 256KB,如果请求体超过这个大小,可能需要配置 spring.codec.max-in-memory-size 以避免内存溢出。

解决办法

spring:
codec:
max-in-memory-size: 20MB # 设置请求体的最大长度为 20MB

其他容器的长度

nginx:

Nginx 默认的请求体大小限制是 1MB。如果请求体超过这个大小,客户端会收到 413 Request Entity Too Large 错误。可以通过 client_max_body_size 进行修改。