Jan 4, 2008

Παρακολούθηση (monitoring) ενός JVM

Ένα από τα σχετικά άσημα προγράμματα που περιλαμβάνονται στα JDK 1.5 και 1.6 είναι το JConsole (http://java.sun.com/developer/technicalArticles/J2SE/jconsole.html) που μας παρέχει πληροφορίες σχετικά με την κατανάλωση μνήμης, τις ρυθμίσεις και την εν γένει συμπεριφορά του JVM. Θα μου πείτε που το θυμήθηκα αυτό; Στην νεώτερη έκδοση του OC4J 11g Technology Preview δεν υπάρχει (προς το παρόν) το Application Server Control, μια γραφική δηλαδή διεπαφή παρακολούθησης. Γι αυτό το λόγο, το JConsole μου φάνηκε χρήσιμο για να παίρνω την απολύτως απαραίτητη πληροφορία για την κατάσταση του JVM του OC4J.

Προκειμένου να ενεργοποιήσουμε την παρακολούθηση ενός JVM, αρκεί να το ξεκινήσουμε με την παράμετρο -Dcom.sun.management.jmxremote Πιο συγκεκριμένα, ξεκινώ το OC4J ως εξής:

java -Dcom.sun.management.jmxremote -XX:MaxPermSize=256m -Xms256m -Xmx768m -jar oc4j.jar

Κατόπιν, εκτελούμε το πρόγραμμα JConsole που βρίσκεται στον κατάλογο $JDK_HOME/bin . Η πρώτη οθόνη θα μας ρωτήσει για το ποιο JVM, τοπικό ή απομακρυσμένο, θέλουμε να παρακολουθήσουμε.

Κατόπιν τούτου, η κονσόλα μας παρουσιάζει πολλές και χρήσιμες πληροφορίες σχετικά με την κατάσταση μνήμης, τα active threads και τις φορτωμένες κλάσεις στο σύστημά μας, επιτρέποντας να ενεργοποιήσουμε κατά βούληση τον Garbage Collector. Με αυτόν τον τρόπο, μπορούμε να κάνουμε το πιο απλό profiling μιας εφαρμογής.

Εξαιρετικά χρήσιμο χαρακτηριστικό του JConsole είναι πως μπορεί να αντλήσει πληροφορίες διαχείρισης από το JVM, βασισμένες στην τεχνολογία Java Management Extension (JMX) Έτσι για παράδειγμα, μπορώ να δω ποιες εφαρμογές έχουν γίνει deploy στον OC4J, καθώς και να σταματήσω αν θέλω κάποιες από αυτές ή να επηρεάσω τις ιδιότητές τους.


No comments: