对于我的 Java 应用程序cf push需要太长时间。
Uploading ${APPNAME}...
Uploading app files from: ${PATH}.jar
Uploading 19.8M, 6584 files
Done uploading
Run Code Online (Sandbox Code Playgroud)
推送时,第一行显示几分钟(CPU 负载为 100%)。之后,实际上传开始(第二行)并在一秒钟内完成。
随着CF_TRACE=true我看到一个resource match请求(https://apidocs.cloudfoundry.org/220/resource_match/list_all_matching_resources.html)。对于此请求,将发送一个 JSON 字符串,其中包含我的 JAR 文件中所有文件的哈希总和。在我的情况下,收集这些信息需要很长时间,因为 JAR 文件包含许多文件。
有没有办法禁用资源匹配请求?据我所知,它仅用于不上传未更改的文件(CloudFoundry 实例已经知道)。不过,上传 20M 的数据只需要一秒钟。
我在运行包含大量类文件的 jar 时看到了这一点。Cloud Foundry 无法缓存小文件,如果您上传数千个第 3 方类文件,那就太浪费了。如果您使用“阴影”罐子,就会发生这种情况。如果重新打包它,使依赖项位于 jar 中,而不是位于平面目录结构中,它将显着提高在 stager 中获得缓存命中的机会。例如,Spring Boot 工具(适用于 Maven 和 Gradle)可以为您执行此操作,并且不要求您对应用程序代码使用 Spring Boot。
| 归档时间: |
|
| 查看次数: |
1067 次 |
| 最近记录: |