2017-09-26 61 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是你的平行利率限制。 –

相关问题