為什麼我的所有建構都因“配置生成器執行時間超過 120 秒”而失敗?
我們將 TeamCity 用於我們的 CI 伺服器,並且最近開始使用其基於 Kotlin 的 DSL來定義程式碼中的建構配置並將它們送出給 git。
昨天,我們在 Kotlin 中創建了一個新項目。當我們推送 repo 時,它似乎可以正常工作,並且在當天晚些時候我們成功建構了。
然而,今天早上,所有項目中的所有建構 - 不僅僅是新項目 - 都失敗並出現如下錯誤消息:
Failed to apply changes from VCS to project settings (revision c1a8904f01408c77d86794e9d276321ba11ae4d8): Configs generator runs longer than 120 seconds. Please fix the errors in VCS and commit again.
該錯誤是在建構開始時生成的,並且建構的其餘部分似乎即使在之後也成功通過它是生成的。錯誤消息沒有出現在 Google 中,我在本地看不到 Kotlin 有任何問題。我在項目配置中做錯了嗎?為什麼昨天還在工作?
結果證明與我們的虛擬化解決方案 AWS EC2 和我們的 TeamCity 伺服器的實例大小有關
t2.medium
。T2 實例是“可突發的”,而 M4 實例等其他實例類型是“固定的”。可突發實例具有較慢的基線最低性能水平,並且它每小時獲得“積分”,使其能夠以比基線更多的 CPU 資源執行。當實例是新實例時,或者如果它們不經常使用 CPU,它們通常會有足夠的 CPU 積分以在更高的性能級別上快速執行,但是當這些積分耗盡時,實例將在基準性能級別上執行得非常緩慢。
這就是發生在我們身上的事情。顯然,基準性能水平太慢了,它無法在兩分鐘內從 Kotlin 生成 TeamCity 的配置,以滿足我們在基準性能水平上非常有限的需求(跨 3 個項目的 7 個建構配置),因此所有建構都失敗了。
一旦我們更改了 TeamCity 伺服器以使用更高性能的實例大小,TeamCity 可以再次從 Kotlin 快速生成其配置,我們的問題得到解決。