Docker Profilleme
Pro Özellik
Docker profilleme Pro lisansı gerektirir.
Yerel Docker konteynerlerinde çalışan Java uygulamalarını otomatik keşif ile profilleyin.
Nasıl Çalışır
Section titled “Nasıl Çalışır”GalataJ, yerel makinenizde Docker konteynerlerinde çalışan Java uygulamalarını otomatik olarak keşfeder.
- Java uygulamanızla Docker konteynerinizi başlatın
- IDE’nizde Profiler panelini açın
- Yenile’ye tıklayın — Docker konteynerleri JVM listesinde görünür
- 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.
Neler Keşfedilir
Section titled “Neler Keşfedilir”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.
Konteynerleri Tanımlama
Section titled “Konteynerleri Tanımlama”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
Alternatif: -javaagent Kullanımı
Section titled “Alternatif: -javaagent Kullanımı”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:
Seçenek 1: docker-compose.yml
Section titled “Seçenek 1: docker-compose.yml”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:
docker compose upSeçenek 2: Dockerfile
Section titled “Seçenek 2: Dockerfile”Ajan JAR dosyasını proje dizininize kopyalayın:
cp ~/.galataj/agent/agent.jar ./agent.jarArdından Dockerfile’ınıza ENTRYPOINT satırından önce şu satırları ekleyin:
COPY agent.jar /opt/galataj-agent.jarENV JAVA_TOOL_OPTIONS="-javaagent:/opt/galataj-agent.jar"ENV GALATAJ_PACKAGE=com.mycompany.myappSeçenek 3: docker run
Section titled “Seçenek 3: docker run”Dosya değişikliği gerekmez — volume mount ve environment flaglerini doğrudan geçin:
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Önemli Notlar
Section titled “Önemli Notlar”com.mycompany.myappyerine uygulamanızın temel paketini yazın (örn.@SpringBootApplicationsı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.
Sınırlamalar
Section titled “Sınırlamalar”Yalnızca Yerel
GalataJ yalnızca yerel makinenizde çalışan Docker konteynerlerini profilleyebilir. Uzak Docker hostları (SSH, uzak Docker API) şu anda desteklenmemektedir.
Sorun Giderme
Section titled “Sorun Giderme”Konteyner görünmüyor
Section titled “Konteyner görünmüyor”- Konteynerin çalıştığından emin olun (durdurulmuş değil)
- Profiler panelinde Yenile’ye tıklayın
- Konteynerin içinde Java süreci olduğunu doğrulayın
- GalataJ’ın çalıştığından emin olmak için Sağlık Kontrolü çalıştırın
Profilleme başlamıyor
Section titled “Profilleme başlamıyor”- Pro lisansının aktif olduğundan emin olun
- Makinenizde Docker’ın çalıştığını kontrol edin
- 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.