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