Frage

Wir haben von JBoss 4 (und JDK 5) auf JBoss 5 (und JDK 6) verbessert. Das Problem ist, dass die Startzeit von 1,5 Minuten (auf JBoss 4) auf mehr als 4 Minuten gestiegen ist.

18:53:35,444 INFO  [ServerImpl] JBoss (Microcontainer) [5.1.0.GA (build: SVNTag=JBoss_5_1_0_GA date=200905221053)] Started in 3m:9s:262ms

Es scheint, dass die Komponente, die JBoss am längsten braucht, um initialisiert zu werden, der JMX ist

18:50:41,926 INFO  [LogNotificationListener] Adding notification listener for logging mbean "jboss.system:service=Logging,type=Log4jService" to server org.jboss.mx.server.MBeanServerImpl@1adc122[ defaultDomain='jboss' ]
18:52:38,797 INFO  [JMXConnectorServerService] JMX Connector server: service:jmx:rmi://lharel2/jndi/rmi://lharel2:1090/jmxconnector

Aus dem Debug -Server -Protokoll erhalte ich diese Zeilen zum problematischen Zeitpunkt:

2009-12-18 18:51:00,886 DEBUG [org.jboss.deployment.MappedReferenceMetaDataResolverDeployer] (main) vfsfile:/C:/QC/Views/QCDev/jboss-5.1.0.GA/server/default/deploy/jmx-console.war/ endpoint mappings:
2009-12-18 18:51:00,886 DEBUG [org.jboss.deployment.MappedReferenceMetaDataResolverDeployer] (main) Processing unit=jmx-console.war, structure: jmx-console.war
2009-12-18 18:52:35,209 DEBUG [org.jboss.deployment.OptAnnotationMetaDataDeployer] (main) Deployment is metadata-complete, skipping annotation processing, ejbJarMetaData=null, jbossWebMetaData=org.jboss.metadata.web.spec.Web23MetaData@1f, jbossClientMetaData=null, metaDataCompleteIsDefault=false

Es gibt kein EJB im Projekt.

Die Speichereinstellungen sind:

 -Xms128m -Xmx512m -XX:MaxPermSize=256m

Haben Sie eine Idee, wie JBoss -Startzeit verbessert werden kann?

Aktualisieren: Bisher, kein Glück, habe ich Shreenis Vorschlag ausprobiert (änderte die Scan -XMLs). Der Server wird im Debug -Modus nicht ausgeführt, sodass der Vorschlag von MICIM nicht relevant ist

War es hilfreich?

Lösung

Ein Schuss in den blauen Himmel ohne weitere Informationen

  • Zeitüberschreitungen für Netzwerk: 1,5 Minuten Verzögerung beim Bereitstellen von JMX-Console.War kann ein Netzwerk-Timeout angeben (z. B. 3 x 30 Sekunden). Versuchen Sie, JBoss zu starten und an eine bestimmte IP -Adresse zu binden mit der -b Befehlszeilenargument oder das jboss.bind.address Systemeigenschaft. Stellen Sie außerdem sicher, dass Ihre Einstellungen für Host- und DNS -Auflösung in Ihrem System korrekt sind.

  • JMX verwendet auch RMI und Sie möchten das möglicherweise festlegen RMI -Server -Hostname als Systemeigenschaft. Bei einigen Linux-Verteilungen hat RMI Probleme mit der Überprüfung des richtigen Hostnamens und der JMX-Console.War kann versuchen, eine Verbindung zum "falschen Localhost" herzustellen. Die Systemeigenschaft ist java.rmi.server.hostname

  • Systemverfolgung: Wenn das nicht hilft, möchten Sie möglicherweise verwenden strace Um den Java -Prozess zu starten, können Sie den Punkt sehen, an dem das System hängt (wenn es aufgrund eines Netzwerks oder ähnlichen Netzwerks wirklich hängt).

Andere Tipps

Das ist eine schrecklich große Lücke in den Protokollen. Ich schlage vor, die Protokollkonfiguration zu ändern, um alles auf Debug -Ebene und nicht auf Informationen zu protokollieren. Dies erzeugt schrecklich viel mehr Protokolleinträge, hilft Ihnen jedoch hoffentlich, sie einzugrenzen.

Der einfachste Weg, dies zu tun, besteht darin, das zu setzen -Djboss.server.log.threshold=DEBUG Systemeigenschaft, wenn Sie JBoss starten

Ich hatte ein solches Problem, aber ich fand eine gute Verbesserung, indem ich die anfängliche und maximale Haufengröße auf dieselben Werte festlegte, ich meine:

 -Xms512m -Xmx512m

Damit habe ich mich in der Startzeit von 4 auf 2 Minuten verbessert.

Ihr Verdacht auf die JMX-Console kann irreführend sein. Möglicherweise arbeiten andere Komponenten im Hintergrund, die nicht mit der JMX-Console zu tun haben. Nach meiner Erfahrung hatten wir ein Problem, bei dem eine kleine Kriegsdatei 3 Minuten dauerte, um zu laden! Es war unschuldig. Der Schuldige war teilweise auf eine Ohrdatei mit vielen Kriegen und Gläser zurückzuführen.

Obwohl ich kein Experte bin, würde ich Folgendes vorschlagen:

  1. Versuchen Sie, die Protokollierung zu verfolgen. Auf diese Weise habe ich einen der Berater (EJBDeployer, glaube ich) miterlebt, unnötig Kriege in einem unserer Ohren zu scannen. Ich habe dann das Scannen dieser Kriegsdateien manuell deaktiviert.
  2. Laufen Sie das Wireshark während des Startups. Ich stellte fest, dass einige Kriegsdateien hängen, während ich auf eine Antwort von einer externen DTD -Anfrage wartete. Diese Websites waren jetzt entweder nicht vorhanden oder würden die DTD-Dateien nicht ordnungsgemäß für Java-basierte Programme bedienen. Ich könnte es beschleunigen, indem die Programmierer lokale DTD -Dateien verwenden oder diese DTDs lokal spiegeln und vor Ort /etc /Host -Loopback haben.

Sie könnten sich darauf beziehen Verknüpfung Um ein unnötiges Annotations -Scannen zu vermeiden, um Ihren Server zu beschleunigen

Sehen http://community.jboss.org/wiki/jboss5xtuningslimm Besonders der "Tuning" -Teil.

Ich verwende JBoss 5.1.0 mit einem MacBook Pro (2,26 GHz 4GB) ohne Anwendungen, die es in 54s beginnt

15:00:26,449 INFO  [ServerImpl] JBoss (Microcontainer) [5.1.0.GA (build: SVNTag=JBoss_5_1_0_GA date=200905221634)] Started in 54s:720ms

Ich habe eine neue Konfiguration basierend auf der "Standardeinstellung" erstellt. Die JMS DataOSurce verweist auf eine Postgres -Datenbank anstelle der "Hyperschalldatenbank" (in Speicherdatenbank)

Ich nehme an, Sie beginnen im Debug -Modus. Dieser Modus kann bis zu dreimal langsamer sein als der normale Modus. Aber es könnte auch ein Problem beim Wechsel von JDK5 auf JDK6 geben. Ich fand diese Lösung hier Im Netz:

Ich habe das gelöst. Es ist ein Debugging -Problem. Ich habe meine Debug -Einstellungen geändert:

wrapper.java.additional.26=-Xdebug
wrapper.java.additional.27=-Xnoagent
wrapper.java.additional.28=-Djava.compiler=NONE
wrapper.java.additional.27=-Xrunjdwp:transport=dt_socket,address=7199,server=y,suspend=n

zu:

wrapper.java.additional.26=-Xdebug
wrapper.java.additional.27=-Xrunjdwp:transport=dt_socket,address=7199,server=y,suspend=n

Und Jboss wird wieder schnell.

Hoffe das hilft.

Benötigen Sie die JMX -Konsolenanwendung? Pragmatische Sache wäre, es vom Server zu entfernen. Sie könnten immer noch die JConsole oder JvisualVM für das gleiche Ding verwenden.

  1. Schalten Sie Annotationsscanning und andere Funktionen aus, die Sie nicht benötigen https://community.jboss.org/wiki/jboss5xtuningslimm

  2. Wenn Sie JBoss von Eclipse starten/stoppen, werden die TMP & Work -Ordner nicht korrekt gereinigt. Richten Sie eine externe Toolkonfiguration ein und führen Sie eine Stapeldatei aus, um vor jedem Start alles in TMP & Work -Ordnern zu löschen.

Ich konnte das "Standard" -Profil von 15/20 Minuten bis 5 Minuten beschleunigen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top