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