Analytics and Automation Software : Cisco Tidal Enterprise Scheduler

Programmateur de marée d'entreprise : Obtenez un vidage mémoire de pile de Javas utilisant le « jstack »

17 octobre 2015 - Traduction automatique
Autres versions: PDFpdf | Anglais (22 août 2015) | Commentaires


Contenu


Introduction

Ce document décrit comment obtenir un vidage mémoire de pile de Javas utilisant la commande de jstack de Javas. Ce processus est valide sur Windows, le Linux, et l'UNIX, et tous les systèmes de marée utilisant Oracle exposent au soleil la version Java 1.6+.

Conditions préalables

Conditions requises

Cisco recommande que vous ayez la connaissance de Javas et la connaissance du système d'exploitation sur lequel Java fonctionne. En outre, la version 1.6+ JDK de Javas (Java Developer Kit) devra être installée sur le système.

Composants utilisés

  • Javas JRE 1.6+ de Sun

  • JDK 1.6+ de Javas de Sun

Conventions

Pour plus d'informations sur les conventions utilisées dans ce document, reportez-vous à Conventions relatives aux conseils techniques Cisco.

Problème

De temps en temps, les besoins de support de capturer les données inférieures de thread qui ne sont pas dans les logs principaux.

Solution

Afin de capturer un vidage mémoire de pile de Javas utilisant l'outil de jstack fourni par le Sun d'Oracle, terminez-vous ces étapes.

Remarque: Le processus de Javas doit exécuter Javas 1.6+ de Sun afin d'exécuter la commande de jstack, et le JDK doit être installé sur le système. Téléchargez le JDK de Sun d'Oracle icileavingcisco.com .

  1. Trouvez le numéro d'identification de processus sur l'ordinateur exécutant le processus de Javas.

    • Sur un ordinateur Windows, vous pouvez utiliser le gestionnaire de tâches pour trouver le numéro d'identification de processus.

      http://www.cisco.com/c/dam/en/us/support/docs/cloud-systems-management/tidal-enterprise-scheduler/113122-java-stack-dump-using-jstack-01.gif

      Spécifiquement, le PID est le numéro d'identification de processus. Si vous ne voyez pas cette colonne, vue choisie > colonnes >PID (identifiant de processus) afin de l'ajouter.

    • Sur UNIX/Linux, vous pouvez émettre la picoseconde - E-F | commande d'UnixMaster de grep afin d'obtenir l'ID de processus :

      root@sunts06:/# ps -ef | grep UnixMaster
        root 5452 5423 0 14:43:21 pts/14 0:00 grep UnixMaster
        root 1868    1 0   Jun 09 ?     31:49 /usr/bin/java -DN=UnixMaster -DTI
      DAL_HOME=/opt/TIDAL/master/bin/.. -Xms256m -Xm
      root@sunts06:/#
  2. Une fois que vous avez le numéro d'identification de processus que vous avez besoin, allez au répertoire de COFFRE où le JDK de Sun est installé et émettez la commande du jstack {PID}{PID} est le numéro d'identification de processus. Ceci imprimera les informations de pile de Javas à l'écran.

    C:\Program Files\Java\jdk1.6.0_25\bin>jstack 3724
    2011-06-30 20:07:37
    Full thread dump Java HotSpot(TM) 64-Bit Server VM (20.0-b11 mixed mode):
    
    "Swing-Shell" daemon prio=6 tid=0x0000000006cce800 nid=0x1bd8 waiting on conditi
    on [0x000000000843f000]
       java.lang.Thread.State:WAITING (parking)
            at sun.misc.Unsafe.park(Native Method)
            - parking to wait for  <0x00000000fb38ace8> (a java.util.concurrent.lock
    s.AbstractQueuedSynchronizer$ConditionObject)
            at java.util.concurrent.locks.LockSupport.park(Unknown Source)
            at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject
    .await(Unknown Source)
            at java.util.concurrent.LinkedBlockingQueue.take(Unknown Source)
            at java.util.concurrent.ThreadPoolExecuter.getTask(Unknown Source)
            at java.util.concurrent.ThreadPoolExecuter$Worker.run(Unknown Source)
            at sun.awt.shell.Win32ShellFolderManager2$ComInvoker$3.run(Unknown 
    Source)
            at java.lang.Thread.run(Unknown Source)
    
    "Thread-2" prio=6 tid=0x0000000006cd0800 nid=0xe6c waiting on condition [0x00000
    0000833f000]
       java.lang.Thread.State: TIMED_WAITING (sleeping)
            at java.lang.Thread.sleep(Native Method)
  3. Afin de réorienter les informations de pile à un fichier, émettez la même commande avec l'option de création de fichier qui fonctionnera dans Windows et Linux/UNIX :

    jstack {PID} > [filename.out]
    

Conversations connexes de la communauté de soutien de Cisco

Le site Cisco Support Community est un forum où vous pouvez poser des questions, répondre à des questions, faire part de suggestions et collaborer avec vos pairs.


Informations connexes


Document ID: 113122