VisualVM, Java uygulamalarını izlemek, analiz etmek ve hata ayıklamak için kullanılan ücretsiz ve açık kaynaklı bir araçtır. Geliştiricilere Java uygulamalarının performansını, bellek kullanımını, thread aktivitelerini ve daha fazlasını takip etme imkanı sunar.
VisualVM, çeşitli amaçlar için kullanılabilecek çok yönlü bir araçtır. Özellikle CPU kullanımını izlemek ve performans darboğazlarını belirlemek, bellek kullanımını takip etmek ve bellek sızıntıları gibi sorunları tespit etmek için kullanışlıdır. Ayrıca, uygulamadaki thread'lerin durumunu ve işlem sürelerini gözlemleyebilir ve potansiyel deadlock'ları veya performans sorunlarını tespit edebilirsiniz. Ayrıca hata ayıklama ve profil oluşturma işlemlerinde de yardımcı olabilir.
VisualVM'den aşağıdaki konuda çıktılar alınabilir.
CPU ve bellek kullanımı grafikleri: Uygulamanın CPU ve bellek kullanımını grafiksel olarak temsil eder.
Thread durumu: Uygulamadaki thread'lerin durumunu ve işlem sürelerini gösterir. Thread tabanlı sorunları tespit etmek için önemlidir.
Heap Dump: Uygulamanın bellek durumunu içeren bir görüntüyü almanıza olanak tanır. Bu, bellek tüketimi veya bellek sızıntısı gibi sorunları tespit etmek için kullanışlıdır.
Bu özellikleri sayesinde VisualVM, Java geliştiricilerinin uygulamalarını daha verimli ve hatasız bir şekilde optimize etmelerine yardımcı olur.
Visualvm'a kullanılan program files – Java - jdk – bin klasörü altından ulaşılabilirken ayrıca internetten tool olarakta temin edilebilir.
VisualVm ile Tomcat Dump Nasıl Alınır?
Tomcat yüklü olan server üzerinde aşağıdaki şekilde Tomcatw altındaki java options parametrelerinde mevcut parametrelerin sonuna (varolan parametreleri silmeden) aşağıdaki 4 satır parametreyi ekleyerek Tomcat servisi restart edilmelidir. Kopyala yapıştır ile parametreler eklendiğinde Tomcat boşluk algıladığı için Tomcat servisi start olamayabilmektedir. Bu konuya dikkat edilmelidir.
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.port=8484
-Dcom.sun.management.jmxremote.ssl=false
Not: Burada yazılan 8484 portu işletim sisteminde boşta olan ve başka bir uygulama tarafından kullanılmayan bir port olmalı.
Bu işlem ardından Tomcat servisi hizmetler altından yeniden başlatılmalıdır.
Program Files altındaki Java – Jdk – Bin klasörü altından Visualvm çalıştırılarak tomcat parametrelerine eklediğimiz jmxport, Jmx Connection alanında Tomcat'in yüklü olduğu serverda kontrol yapılacaksa localhost:port şeklinde veya daha server IP:8484 şeklinde tanımlanabilir.
Tomcat'e eklediğimiz port üzerinden Jmx bağlantısı sağladığımızda Visualvm'de eklediğimiz port ile izlediğimiz Tomcat'in doğru olup olmadığını teyit edebileceğimiz detayları Overview'da inceleyebilirsiniz.
İkinci bir teyit olarak Windows hizmetler altındaki ayakta Tomcat'in PID bilgisi ile Visualvm'in jmxport için oluşturduğu PID bilgisi karşılaştırılabilir. Ekran görüntülerinde görüleceği üzere tomcat servisi ile visualvm'de 4640 PID bilgisinin eşleşildiği gözükmektedir. Bu ID dinamik olup kontrol ettiğiniz anda farklı bir değer olabilir.
Heap Dump – Threads Dump – CPU Sampler Nasıl Alınır?
Heap Dump
VisualVm üzerinde monitor tabı altında Heap için CPU yükünü çizen grafikler görüldüğünde sağ üst alanda gözüken Heap Dump gözüken buton tıklanarak sol alanda eklediğimiz localhost:8484 veya IP:8484 jmx bağlantısının altına Heap dump için satır oluşmaktadır. Bu alanda save as seçeneği ile dump dosyası kaydedilebilir. Tomcat kullanıcısı (service) admin yetkisinde olmalıdır. Bunun için sunucuda domain admin yetkisinde bir kullanıcı, Tomcat servisi F9 menü Properties ile Log On alanında belirlenmelidir. durumda Head Dump alınırken uyarı ile karşılaşılabilir..
Threads Dump
VisualVm üzerinde Threads tabı altında Thread için grafikler görüldüğünde sağ üst alanda gözüken Thread Dump gözüken buton tıklanarak sol alanda eklediğimiz localhost:8484 veya IP:8484 jmx bağlantısının altına thread dump için satır oluşmaktadır. Bu alanda save as seçeneği ile dump dosyası kaydedilebilir.
CPU Sampler
VisualVm üzerinde Sampler tabı altında CPU alanı tıklandığında grafikler görüldüğünde alt alandaki Snapshot butonuna tıklanarak sol alanda eklediğimiz localhost:8484 veya IP:8484 jmx bağlantısının altına snapshot için satır oluşmaktadır. Bu alanda save as seçeneği ile dump dosyası kaydedilebilir.