2015-10-15 21 views
4

對於我的Java應用程序cf push需要很長時間。Cloud Foundry`cf push`很慢:CPU使用率過高,禁用資源匹配

Uploading ${APPNAME}... 
Uploading app files from: ${PATH}.jar 
Uploading 19.8M, 6584 files 
Done uploading 

推動時,第一行顯示爲分鐘(100%的CPU負載)。之後,實際上傳開始(第二行),並在一秒鐘內完成。

With CF_TRACE=true我看到一個resource match請求(https://apidocs.cloudfoundry.org/220/resource_match/list_all_matching_resources.html)。對於此請求,會發送一個JSON字符串,其中包含我的JAR文件中所有文件的哈希總和。收集這些信息對我來說太長了,因爲JAR文件包含很多文件。

有沒有辦法禁用資源匹配請求?據我所知,它只用於不上傳未更改的文件(CloudFoundry實例已知)。不過,上傳20M數據只需要一秒鐘。

回答

2

我在運行包含大量類文件的jar時會看到這個。 Cloud Foundry無法緩存小文件,如果您上傳數以千計的第三方類文件,這是浪費資源。如果您使用「陰影」罐子,會發生這種情況。如果你重新打包它,所以依賴關係在jar中,而不是在一個簡單的目錄結構中,這將顯着提高在stager中獲得緩存命中的機會。例如Spring Boot工具(用於Maven和Gradle)爲你做這件事,並且不要求你使用Spring Boot作爲應用程序代碼。