【问题标题】:Unable to upload 100 MB file Using Rest Service in PCF无法在 PCF 中使用 Rest 服务上传 100 MB 文件
【发布时间】:2020-09-18 09:06:34
【问题描述】:

我有一个要求,要求上传最大 150MB 的文件。我使用 Spring boot 1.5 编写了一个基于 java 的 rest 服务。我无法上传更大的文件。该代码适用于较小的文件大小。我已经为 tomcat 配置了所有有效负载/多部分相关的配置。它不适用于大文件。我收到“502:错误网关:注册端点无法处理请求。代码部署在 Pivotal Cloud Foundry 中。我的问题是“在 Go 路由器级别配置的有效负载是否有任何大小限制,这会导致此问题? " 任何帮助表示赞赏。

谢谢

【问题讨论】:

    标签: spring-boot multipart cloud-foundry


    【解决方案1】:

    以下是我的建议:

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

    2. 当您部署到 Cloud Foundry 安装时,不会有任何额外的基于大小的限制。 Gorouter 不直接限制可以上传的文件的大小。 然而,Gorouter 对一个请求可以消耗的完整时间有一个上限(即接收请求、处理和响应)。默认为 900s(您的 CF 平台可能会有所不同,请咨询您的平台运营商以获取具体值)。

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

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

    如果这些都没有帮助,您将需要查找更多信息。或许可以尝试提高日志级别并运行cf logs 以查看是否从您的应用程序中获得更多线索。

    【讨论】:

    • 是的,你是对的。我的客户上传文件很慢。我能够使它工作。谢谢你的详细解释。
    【解决方案2】:

    尝试使用配置来增加多部分的大小

    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>
    

    【讨论】:

    • 我已经添加了这个配置。它仍然无法正常工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-18
    • 2013-01-28
    • 1970-01-01
    • 2021-12-23
    相关资源
    最近更新 更多