İçeriğe geç

Docker Profilleme

Pro Özellik

Docker profilleme Pro lisansı gerektirir.

Yerel Docker konteynerlerinde çalışan Java uygulamalarını otomatik keşif ile profilleyin.


GalataJ, yerel makinenizde Docker konteynerlerinde çalışan Java uygulamalarını otomatik olarak keşfeder.

  1. Java uygulamanızla Docker konteynerinizi başlatın
  2. IDE’nizde Profiler panelini açın
  3. Yenile’ye tıklayın — Docker konteynerleri JVM listesinde görünür
  4. Konteyneri seçin ve profillemeyi başlatın

Yapılandırma gerekmez. GalataJ bağlantıyı otomatik olarak yönetir.

Otomatik bağlantı için JDK önerilir

Konteyneriniz JDK imajı kullanıyorsa GalataJ hiçbir ek yapılandırma gerektirmeden otomatik olarak bağlanır. Konteyneriniz JRE veya bağlantı desteği olmayan bir JDK kullanıyorsa -javaagent yöntemiyle profilleme yapabilirsiniz. Aşağıdaki Alternatif: -javaagent Kullanımı bölümüne bakın.


GalataJ şunlarda çalışan Java süreçlerini bulur:

  • Docker Desktop (Windows/macOS)
  • Docker Engine (Linux)
  • Docker Compose projeleri

Konteyner yerel makinenizde çalıştığı sürece, GalataJ onu profilleyebilir.


JVM listesinde Docker konteynerleri şunları gösterir:

  • Konteyner adı — Konteynere verdiğiniz ad
  • İmaj adı — Kullanılan Docker imajı
  • Konteyner ID — Tanımlama için kısa ID

Otomatik bağlantı çalışmıyorsa — örneğin konteyneriniz JRE imajı veya çalışma zamanı bağlantısını desteklemeyen bir JDK kullanıyorsa — profiler ajanını başlangıçta -javaagent ile yükleyebilirsiniz. Bu yöntem JRE dahil tüm Java imajlarıyla çalışır.

Aşağıdaki seçeneklerden birini kullanın:

Servis tanımınıza aşağıdakileri ekleyin — Dockerfile değişikliği gerekmez:

services:
my-app:
# ... mevcut yapılandırmanız ...
volumes:
- ~/.galataj/agent/agent.jar:/opt/galataj-agent.jar:ro
environment:
- JAVA_TOOL_OPTIONS=-javaagent:/opt/galataj-agent.jar
- GALATAJ_PACKAGE=com.mycompany.myapp
extra_hosts:
- "host.docker.internal:host-gateway"

Ardından servislerinizi yeniden başlatın:

Terminal window
docker compose up

Ajan JAR dosyasını proje dizininize kopyalayın:

Terminal window
cp ~/.galataj/agent/agent.jar ./agent.jar

Ardından Dockerfile’ınıza ENTRYPOINT satırından önce şu satırları ekleyin:

COPY agent.jar /opt/galataj-agent.jar
ENV JAVA_TOOL_OPTIONS="-javaagent:/opt/galataj-agent.jar"
ENV GALATAJ_PACKAGE=com.mycompany.myapp

Dosya değişikliği gerekmez — volume mount ve environment flaglerini doğrudan geçin:

Terminal window
docker run \
-v ~/.galataj/agent/agent.jar:/opt/galataj-agent.jar:ro \
-e JAVA_TOOL_OPTIONS="-javaagent:/opt/galataj-agent.jar" \
-e GALATAJ_PACKAGE=com.mycompany.myapp \
--add-host=host.docker.internal:host-gateway \
your-image
  • com.mycompany.myapp yerine uygulamanızın temel paketini yazın (örn. @SpringBootApplication sınıfınızın bulunduğu paket).
  • Linux’ta extra_hosts (Compose) veya --add-host (docker run) ayarı gereklidir; konteynerin host makineye ulaşabilmesi için kullanılır. Yukarıdaki örnekler bunu zaten içermektedir.
  • IDE sihirbazını kullandığınızda, oluşturulan kod parçacığında doğru paket zaten doldurulmuş olarak gelir.

Yalnızca Yerel

GalataJ yalnızca yerel makinenizde çalışan Docker konteynerlerini profilleyebilir. Uzak Docker hostları (SSH, uzak Docker API) şu anda desteklenmemektedir.


  1. Konteynerin çalıştığından emin olun (durdurulmuş değil)
  2. Profiler panelinde Yenile’ye tıklayın
  3. Konteynerin içinde Java süreci olduğunu doğrulayın
  4. GalataJ’ın çalıştığından emin olmak için Sağlık Kontrolü çalıştırın
  1. Pro lisansının aktif olduğundan emin olun
  2. Makinenizde Docker’ın çalıştığını kontrol edin
  3. IDE’nizi yeniden başlatmayı deneyin

Bağlantı hatası: jdk.attach mevcut değil

Şu gibi hatalar görürseniz:

  • “jdk.attach module not available in container”
  • “The container image must include JDK (not just JRE)”
  • “NoClassDefFoundError: com/sun/tools/attach/AttachNotSupportedException”

konteyner JRE imajı veya bağlantı desteği olmayan bir JDK kullanıyor.

Çözüm A — JDK imajına geçin:

# Önce (otomatik bağlantı için başarısız)
FROM eclipse-temurin:17-jre
# Sonra (GalataJ ile çalışır)
FROM eclipse-temurin:17-jdk

Önerilen JDK imajları: eclipse-temurin:17-jdk, amazoncorretto:17, azul/zulu-openjdk:17.

İmajı yeniden oluşturun ve konteyneri tekrar çalıştırın, ardından profillemeyi başlatın.

Çözüm B — Bunun yerine -javaagent kullanın:

JDK imajına geçemiyorsanız, JRE dahil tüm Java imajlarıyla çalışan -javaagent yöntemini kullanın. Yukarıdaki Alternatif: -javaagent Kullanımı bölümüne bakın.


Pro'ya Yükselt

Docker profilleme ve daha fazlasını edinin

Yükselt →

Oturum Geçmişi

Konteyner performansını zaman içinde karşılaştırın

Daha fazla →