【发布时间】:2023-04-08 12:30:01
【问题描述】:
可能没有多少开发人员和我一样面临同样的问题。
但我想分享我已经解决了将近 1 个月的解决方案。
我使用Kubernetes和docker-compose,这个Webflux服务(容器)设置内存限制1g mem_limit: 1g我不允许增加内存限制。
coRouter 已被用作容器中的控制器。
@Configuration
class WebController(
) {
@Bean
fun endpoints() = coRouter {
contentType(MediaType.MULTIPART_FORM_DATA).nest {
POST("/uploadFile") { requestParm ->
requestParm.awaitMultipartData().multipartFormData["file"]?.first()
}
}
}
}
如果我使用 API 上传文件
http://localhost:9004/uploadFile 100MB,10 个文件(使用 JS Ajax)
它将产生java.lang.OutOfMemoryError: Java heap space,因为它没有足够的内存。
每当您调用 requestParm.awaitMultipartData() 时,它都会将这些字节流式传输到内存中。
【问题讨论】:
标签: spring-webflux large-files