2017-09-26 62 views
-1

我正在使用Flyway部署到300!數據庫。我所做的是創建一個具有flyway命令的cmd文件 - 每個300數據庫都有一行。FlyWay無法獲取JVM內存設置

像這樣:
flyway -configFile = -url = migrate。

cmd文件中有300行這樣的行,當執行順序時它的工作很棒 - 顯然它也需要更多時間。

如果我想在並行運行它我將不得不在命令的開始,像這樣添加「開始」:

開始遷飛-configFile = <的conf文件路徑> -url = < DB網址> migrate

這種方法面臨的問題是 - 在遷移大約100個DB之後,Microsoft-Windows-Resource-Exhaustion-Detector檢測到低虛擬內存條件。現在我知道如何設置JVM內存,並嘗試過各種選項,但我認爲它沒有任何區別。我認爲FlyWay完全忽略了JVM設置。

我在Windows服務器(6位)上執行Flyway的地方有16GB物理內存。 當並行運行發生時 - 我簽入了任務管理器,並且使用率不超過3 GB。 JRE版本是64位。 我設置了_Java_Options。 我也嘗試在Java控制面板中設置JVM內存,但似乎沒有任何工作。

謝謝

回答

0

你需要限制你在並行運行遷移的數量。從你的描述看來,你正在嘗試運行300使用太多的RAM。並行嘗試10並從那裏開始工作。

看到這個問題Best strategy to run multiple flyway migration in parallel爲基於Linux的方法。使用git bash安裝git for windows是一種獲取linux工具來嘗試的便捷方式。

+0

在FlyWay安裝中有一個文件:\ jre \ lib \ amd64 \ jvm.cfg。在該文件中 - 我添加了以下內容:-Xms64m -Xmx64m -Xss8m -XX:-UseParallelGC。現在我有30個線程在paralled中運行,並且在執行開始之前有9 GB的可用內存。我做錯了什麼? 20個線程成功。對於剩下的10個,我得到這個錯誤:VM初始化期間發生錯誤 無法爲對象堆預留足夠的空間。 – Mihir

+0

從這裏不確定抱歉。也許20是你的平行利率限制。 –

相關問題