【问题标题】:FlyWay not picking up JVM memory settingsFlyWay 未获取 JVM 内存设置
【发布时间】:2018-03-07 23:22:56
【问题描述】:

我正在使用Flyway部署到300!!!数据库。我所做的是创建了一个包含 flyway 命令的 cmd 文件 - 300 个数据库中的每个数据库各 1 行。

像这样:
flyway -configFile= -url= 迁移。

cmd 文件中有 300 行这样的行,当执行顺序执行时效果很好 - 显然它也需要更多时间。

如果我想并行运行它,我必须在命令的开头添加“start”,如下所示:

start flyway -configFile= -url= 迁移

这种方法面临的问题是 - 在大约 100 个 DB 上迁移后,Microsoft-Windows-Resource-Exhaustion-Detector 检测到虚拟内存不足的情况。现在我知道如何设置 JVM 内存并尝试了各种选项,但我认为这根本没有任何区别。我认为 FlyWay 完全忽略了 JVM 设置。

我在执行 Flyway 的 Windows 服务器(6 位)上有 16GB 物理内存。 当并行运行发生时 - 我已经检查了任务管理器并且使用量不超过 3 GB。 JRE 版本为 64 位。 我设置了_Java_Options。 我也尝试在 Java 控制面板中设置 JVM 内存,但似乎没有任何效果。

谢谢

【问题讨论】:

    标签: java sql-server jvm flyway multiple-databases


    【解决方案1】:

    您需要限制并行运行的迁移次数。根据您的描述,您似乎正在尝试运行 300,它使用了太多 RAM。并行尝试 10 个,然后从那里开始工作。

    有关基于 linux 的方法,请参阅此问题 Best strategy to run multiple flyway migration in parallel。使用 git bash 安装 git for windows 是获取 linux 工具来尝试此操作的便捷方式。

    【讨论】:

    • 在 FlyWay 安装中有一个文件:\jre\lib\amd64\jvm.cfg。在该文件中 - 我添加了以下内容:-Xms64m -Xmx64m -Xss8m -XX:-UseParallelGC。现在我有 30 个线程并行运行,并且在执行开始之前有 9 GB 的可用内存。我做错了什么? 20 个线程成功。对于剩下的 10 个,我收到此错误:在 VM 初始化期间发生错误无法为对象堆保留足够的空间。
    • 不确定从这里开始抱歉。也许 20 是您的并行速率限制。
    猜你喜欢
    • 1970-01-01
    • 2022-01-12
    • 2021-02-01
    • 2013-03-09
    • 1970-01-01
    • 1970-01-01
    • 2015-12-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多