无法使用PCF中的Rest Service上传100 MB文件

问题描述

我有一个要求,上传文件的最大大小为150MB。我已经使用Spring Boot 1.5编写了一个基于Java的Rest服务。我无法上传较大的文件。该代码适用于较小的文件大小。我已经为tomcat配置了所有与payload / multipart相关的配置,不适用于大型文件。我收到“ 502:错误的网关:注册的端点无法处理该请求。该代码已部署在Pivotal Cloud Foundry中。我的问题是”在Go路由器级别配置的有效负载是否存在大小限制,这会导致此问题? “感谢您的帮助。

谢谢

解决方法

这是我的建议:

  1. 在本地运行您的应用程序。确保您可以上传150M +的文件。这样可以确保正确配置了Spring Boot,并且在Tomcat(嵌入式)或Spring中没有任何会导致此问题的限制。

  2. 当您部署到Cloud Foundry安装时,将没有基于大小的其他限制。 Gorouter不会直接限制可以上传的文件的大小。 但是,Gorouter对于一个请求可以消耗多少时间(即接收请求,处理和响应)有一个上限。默认情况下为900秒(您的CF平台可能有所不同,请咨询您的平台运营商以获取特定值)。

    之所以这样说是因为您的客户端的上传带宽将在这里发挥作用。如果您的客户端正在缓慢上载150M文件,那么假设要花费一个小时来上载该文件,那么它将失败,并显示您所看到的响应。

    我的确认建议是运行cf logs并查找标记为[RTR]的日志条目,该条目与您失败的请求相对应。它将具有502状态代码。现在,检查response_time字段,看看它是否与平台上设置的最大请求时间匹配(默认为900s)。如果匹配,那就是您的问题。

如果上述方法均无济于事,则需要查找更多信息。也许尝试提高日志级别并运行cf logs,以查看是否从应用程序中获得更多线索。

,

尝试通过配置增加多部分大小

spring.http.multipart.max-file-size = 200MB //您可以

Tomcat的配置或AP

webapps/manager/WEB-INF/web.xml
<multipart-config>
   <max-file-size>52428800</max-file-size>
   <max-request-size>52428800</max-request-size>
   <file-size-threshold>0</file-size-threshold>
</multipart-config>