Red Hat Training

A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform

Chapitre 14. JVM

14.1. JVM

14.1.1. Paramètres de configuration de JVM

Les paramètres de configuration de machines virtuelles Java (JVM) varient selon les instances de domaine géré et les instances de serveur autonome. Dans un domaine géré, les paramètres de JVM sont déclarés dans les fichiers de configuration host.xml et domain.xml, et ils sont déterminés par les composants de contrôleur de domaine chargés de lancer et d'arrêter le processus du serveur. Dans une instance de serveur autonome, les processus de démarrage de serveur peuvent passer des paramètres de ligne de commande au démarrage. Ceux-ci peuvent être déclarés depuis la ligne de commande ou via l'écran System Properties dans la console de gestion.
Domaine géré

Une caractéristique importante du domaine géré est la possibilité de définir des paramètres de la JVM à plusieurs niveaux. Vous pouvez configurer les paramètres de JVM personnalisés au niveau de l'hôte, par groupe de serveurs, ou par instance de serveur. Les éléments enfants plus spécialisés remplacent la configuration parent, permettant la déclaration des configurations de serveur spécifique sans nécessiter d'exclusions au niveau groupe ou hôte. Cela permet également à la configuration parent d'être héritée par les autres niveaux jusqu'à ce que les paramètres soient déclarés dans les fichiers de configuration ou transmis pendant le runtime.

Exemple 14.1. Les paramètres de configuration JVM du fichier de configuration du domaine

L'exemple suivant montre une déclaration JVM pour un groupe de serveurs dans le fichier de configuration domain.xml.
<server-groups>
       <server-group name="main-server-group" profile="default">
           <jvm name="default">
               <heap size="64m" max-size="512m"/>
           </jvm>
           <socket-binding-group ref="standard-sockets"/>
       </server-group>
       <server-group name="other-server-group" profile="default">
           <jvm name="default">
               <heap size="64m" max-size="512m"/>
           </jvm>
           <socket-binding-group ref="standard-sockets"/>
       </server-group>
</server-groups>
Dans cette instance, un groupe de serveurs appelé main-server-group déclare une taille de segment de 64 mégaoctets et une taille de segment maximale de 512 mégaoctets. Tout serveur qui appartient à ce groupe héritera de ces paramètres. Vous pouvez modifier ces paramètres pour le groupe dans son ensemble, par hôte ou serveur individuel.

Exemple 14.2. Les paramètres de configuration du domaine dans le fichier de configuration de l'hôte

L'exemple suivant montre une déclaration JVM pour un groupe de serveurs dans le fichier de configuration host.xml.
<servers>
  <server name="server-one" group="main-server-group" auto-start="true">
    <jvm name="default"/>
  </server>
  <server name="server-two" group="main-server-group" auto-start="true">
    <jvm name="default">
      <heap size="64m" max-size="256m"/>
    </jvm>
    <socket-bindings port-offset="150"/>
  </server>
  <server name="server-three" group="other-server-group" auto-start="false">
    <socket-bindings port-offset="250"/>
  </server>
</servers>
Dans ce cas, un serveur appelé server-two appartient au groupe de serveurs nommé main-server-group, qui hérite les paramètres du groupe de JVM par défaut. Dans l'exemple précédent, la taille du segment principal de main-server-group a été fixée à 512 méga-octets. En déclarant une taille de segment basse de 256 mégaoctets, server-two peut substituer les paramètres de domain.xml pour ajuster les performances comme vous le souhaitez.
Paramètres de configuration de serveur autonome en cours d'exécution

Les paramètres de JVM pour des instances de serveurs autonomes peuvent être déclarés pendant l'exécution en définissant la variable d'environnement JAVA_OPTS avant de démarrer le serveur. Un exemple de définition de la variable d'environnement JAVA_OPTS en ligne de commande Linux est :

[user@host bin]$ export JAVA_OPTS="-Xmx1024M"
La même configuration peut être utilisée dans un environnement Microsoft Windows, comme suit :
C:\> set JAVA_OPTS="Xmx1024M"
Alternativement, les paramètres de configuration JVM peuvent être ajoutés au fichier standalone.conf qui se trouve dans le dossier EAP_HOME/bin contenant des exemples d'options à passer à la JVM.

Avertissement

En définissant la variable d'environnement JAVA_OPTS, vous redéfinissez les valeur par défaut de la variable d'environnement JAVA_OPTS. Cela peut compromettre ou résilier le démarrage de JBoss EAP.

14.1.2. Afficher le statut JVM dans la console de gestion

Le statut de la Machine virtuelle Java (JVM) peut être affichée dans la console de gestion pour le serveur autonome ou un domaine géré. La console affiche l'utilisation de segments, leur non utilisation, et l'usage de threads du serveur. Malgré que les statistiques ne soient pas affichés en temps réel, vous pouvez actualiser l'affichage de la console pour donner un aperçu à jour des ressources de la machine virtuelle Java.
Le statut de la JVM affiche les valeurs suivantes.

Tableau 14.1. Attributs de Statut JVM

Type Description
Max Le montant de mémoire maximale pouvant être utilisé pour la gestion de la mémoire. La mémoire maximum disponible s'affiche sur la barre grise claire.
Utilisé Le montant de mémoire utilisée. La mémoire utilisée s'affiche sur la barre grise claire.
Validé Le montant de mémoire allouée à l'utilisation pour une machine virtuelle Java. La mémoire utilisée s'affiche sur la barre grise claire.

Procédure 14.1. Afficher le statut JVM dans la console de gestion

    • Affichage du statut de la JVM pour une instance de serveur autonome

      Sélectionner l'onglet Runtime en haut de l'écran. Étendre le menu Status, puis étendre le menu Platform. Sélectionner JVM.
    • Afficher le statut de la JVM d'un domaine géré

      Sélectionner l'onglet Runtime en haut de l'écran. Étendre le menu Server Status, puis étendre le menu Platform. Sélectionner JVM.
  1. Le domaine géré peut rendre visibles toutes les instances de serveur dans le groupe de serveurs, mais ne vous permettra d'afficher qu'un seul serveur à la fois en sélectionnant dans le menu serveur. Pour afficher le statut des autres serveurs dans votre groupe de serveurs, cliquer sur Change Server en haut à gauche de l'écran pour sélectionner à partir de l'hôte et des serveurs affichés dans votre groupe. cliquer sur le bouton Done pour terminer.
Résultat

Le statut des paramètres de configuration de la JVM de l'instance de serveur est affiché.

14.1.3. Configuration d'une JVM

Les balises <jvm></jvm> prennent en charge l'utilisation des options <jvm-options></jvm-options>, pouvant être utilisées pour ajouter des paramètres à la configuration de la JVM en utlisant la balise <option value="VALUE"/>.

Exemple 14.3. Utilisation de <jvm-options>

<jvm name="default">
  <heap size="1303m" max-size="1303m"/>
  <permgen max-size="256m"/>
  <jvm-options>
    <option value="-XX:+UseCompressedOops"/>
  </jvm-options>
</jvm>

Configurer une JVM par le CLI

Pour configurer une JVM par le CLI, utiliser la syntaxe suivante :

# cd /server-group=main-server-group/jvm=default

# :add-jvm-option(jvm-option="-XX:+UseCompressedOops")
{
    "outcome" => "success",
    "result" => undefined,
    "server-groups" => {"main-server-group" => {"host" => {"master" => {
        "server-one" => {"response" => {
            "outcome" => "success",
            "response-headers" => {
                "operation-requires-restart" => true,
                "process-state" => "restart-required"
            }
        }},
        "server-two" => {"response" => {
            "outcome" => "success",
            "response-headers" => {
                "operation-requires-restart" => true,
                "process-state" => "restart-required"
            }
        }}
    }}}}
}

# :read-resource

# Expected Result:

[domain@localhost:9999 jvm=default] :read-resource                                      
  {
    "outcome" => "success",
    "result" => {
    "agent-lib" => undefined,
    "agent-path" => undefined,
    "env-classpath-ignored" => undefined,
    "environment-variables" => undefined,
    "heap-size" => "1303m",
    "java-agent" => undefined,
    "java-home" => undefined,
    "jvm-options" => ["-XX:+UseCompressedOops"],
    "max-heap-size" => "1303m",
    "max-permgen-size" => "256m",
    "permgen-size" => undefined,
    "stack-size" => undefined,
    "type" => undefined
  }
}

Supprimer l'entrée jvm-options

Pour supprimer l'entrée jvm-options, utiliser la syntaxe suivante :

# cd /server-group=main-server-group/jvm=default

# :remove-jvm-option(jvm-option="-XX:+UseCompressedOops")

# Expected Result:

[domain@localhost:9999 jvm=default] :remove-jvm-option(jvm-option="-XX:+UseCompressedOops")
{
    "outcome" => "success",
    "result" => undefined,
    "server-groups" => {"main-server-group" => {"host" => {"master" => {
        "server-one" => {"response" => {
            "outcome" => "success",
            "response-headers" => {
                "operation-requires-restart" => true,
                "process-state" => "restart-required"
            }
        }},
        "server-two" => {"response" => {
            "outcome" => "success",
            "response-headers" => {
                "operation-requires-restart" => true,
                "process-state" => "restart-required"
            }
        }}
    }}}}
}