2 Stimmen

Wie man die Bereitstellung mit Maven pax:provision beschleunigt

Ich habe vor kurzem angefangen, an einem Projekt mit etwa 40 anderen Entwicklern zu arbeiten. Wir verwenden OSGi zusammen mit Apache Felix. Wir bauen und deployen mit Maven und dem maven-pax-plugin. OSGi und pax sind für mich beide sehr neu, daher kenne ich keine Details zur Projekt-Setup.

Um auf meine eigene Maschine zu deployen, verwende ich die Befehle

mvn clean install
mvn pax:provision

Der Befehl pax:provision startet pax-runner und die letzten Zeilen im Log sind:

 -> Bereitstellen des Bundles [...., auf Standardstartebene, Bundle wird gestartet, Bundle wird aus dem Cache geladen]
 -> Vorbereitung des Frameworks [Felix 4.0.3]
 -> Herunterladen der Bundles...
 -> Verwendung der Ausführungsumgebung [KEINE]
 -> Der Runner hat seine Arbeit erfolgreich beendet!

Hören auf Transport dt_socket an Adresse: 5005

Auf einigen der verwendeten PCs dauert es etwa 30 Sekunden bis 1 Minute, nachdem diese Zeile erscheint, bis Apache Felix startet und die Anwendung über einen Browser erreichbar ist. Auf dem PC meines Kollegen dauert dies jedoch etwa 8-9 Minuten und bei mir etwa 16 Minuten.

In diesen 16 Minuten gibt es keine übermäßige CPU-Auslastung oder Netzwerkverkehr. Es scheint, als ob nichts passiert.

Ich habe versucht, das Logging-Level auf Debug zu ändern, was mir eine Menge Informationen über den pax-runner liefert, aber nach der Zeile 'Hören auf Transport dt_socket...' ist es 16 Minuten lang ruhig. In dieser Zeit kann ich meinen Remote-Debugger (IntelliJ) mit dem Server verbinden, also muss etwas laufen.

Keiner meiner Kollegen scheint zu wissen, was in dieser Zeit passiert, und warum es bei uns beiden so lange dauert, aber bei anderen Personen so schnell geht. Auch Google gibt mir keine Hinweise, deshalb dachte ich, ich frage hier.

Es handelt sich um ein ziemlich kompliziertes Projekt-Setup, daher möchte ich Stück für Stück programmieren und viel testen, aber 16 Minuten auf eine kleine Änderung zu warten, bremst natürlich die Produktivität.

Ich hoffe, jemand kann mir bei diesem Problem helfen. Vielen Dank!

0voto

Ming Tsai Punkte 187

Finden Sie heraus, ob die Bundles alle ordnungsgemäß gestartet wurden. Entweder durch Zugriff auf die Felix-Konsole und Eingabe des Befehls "ps", "scr info" oder durch Verwendung eines Webkonsole.

Wenn alle Bundles aufgelöst und aktiviert sind, dann beginnen Sie mit der Überprüfung von anwendungsspezifischen Logs/Events, um festzustellen, ob sie betriebsbereit sind.

0voto

swist Punkte 1071

Ich würde sagen, dass Sie den Debug-Agenten mit der Option suspend auf true aktiviert haben. Suchen Sie nach etwas Ähnlichem in Ihren poms:

        --vmOptions="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005"

Ändern Sie suspend=y zu suspend=n.

Ich weiß, dass dies eine alte Frage ist, aber vielleicht hat jemand ein ähnliches Problem.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X