2017-09-26 3 views
-1

J'utilise Flyway pour déployer 300! Bases de données Ce que j'ai fait est créé un fichier cmd qui a la commande flyway - 1 ligne chacun pour chacune des 300 bases de données.FlyWay ne capte pas les paramètres de la mémoire JVM

Comme ceci:
flyway -configFile = -url = migrer.

Il y a 300 lignes de ce type dans le fichier cmd et cela fonctionne très bien lorsque l'exécution est séquentielle - évidemment, cela prend également plus de temps.

Si je veux courir en parallèle je vais devoir ajouter « start » au début de la commande comme ceci:

start = -configFile des voies de migration chemin du fichier <conf> -url = < URL DB Le problème auquel je suis confronté avec cette approche est le suivant: après la migration sur environ 100 bases de données, le détecteur de ressources-ressources Microsoft détecte une condition de mémoire virtuelle faible. Maintenant, je sais comment configurer la mémoire de la JVM et j'ai essayé différentes options, mais je ne pense pas que cela fasse la moindre différence. Je pense que FlyWay ignore complètement les paramètres de la JVM.

J'ai 16 Go de mémoire physique sur le serveur Windows (6 bits) où Flyway est en cours d'exécution. Lorsque l'exécution parallèle se produit - j'ai vérifié dans le Gestionnaire des tâches et l'utilisation ne dépasse pas 3 Go. La version JRE est 64 bits. Je définis _Java_Options. J'ai également essayé de configurer la mémoire JVM dans le panneau de configuration Java, mais rien ne semble fonctionner.

Merci

Répondre

0

Vous devrez limiter le nombre de migrations que vous exécutez en parallèle. De votre description, il semble que vous essayez d'exécuter 300 qui utilise trop de RAM. Essayez 10 en parallèle et travaillez à partir de là. Voir la question Best strategy to run multiple flyway migration in parallel pour une approche basée sur Linux. Installer git pour Windows avec git bash est un moyen pratique d'obtenir des outils linux pour l'essayer.

+0

Dans l'installation de FlyWay, il y a un fichier: \ jre \ lib \ amd64 \ jvm.cfg. Dans ce fichier - j'ai ajouté ce qui suit: -Xms64m -Xmx64m -Xss8m -XX: -UseParallelGC. Maintenant, j'ai 30 threads en parallèle et il y a 9 Go de mémoire libre avant le début de l'exécution. Que fais-je de mal? 20 discussions réussissent. Pour les 10 restants, j'ai cette erreur: Une erreur s'est produite lors de l'initialisation de la machine virtuelle Impossible de réserver suffisamment d'espace pour le tas d'objets. – Mihir

+0

Pas sûr d'ici désolé. Peut-être 20 est votre limite de taux parallèle. –