इसे छोड़कर कंटेंट पर जाएं

Docker प्रोफाइलिंग

Pro फीचर

Docker प्रोफाइलिंग के लिए Pro लाइसेंस आवश्यक है।

स्वचालित खोज के साथ लोकल Docker कंटेनरों में चल रहे Java एप्लिकेशन को प्रोफाइल करें।


यह कैसे काम करता है

Section titled “यह कैसे काम करता है”

GalataJ स्वचालित रूप से आपकी लोकल मशीन पर Docker कंटेनरों में चल रहे Java एप्लिकेशन खोजता है।

  1. अपने Docker कंटेनर को Java एप्लिकेशन के साथ शुरू करें
  2. अपने IDE में Profiler पैनल खोलें
  3. रिफ्रेश पर क्लिक करें — Docker कंटेनर JVM सूची में दिखाई देंगे
  4. कंटेनर चुनें और प्रोफाइलिंग शुरू करें

कोई कॉन्फ़िगरेशन आवश्यक नहीं। GalataJ कनेक्शन को स्वचालित रूप से संभालता है।

स्वचालित अटैच के लिए JDK अनुशंसित

यदि आपका कंटेनर JDK इमेज का उपयोग करता है, तो GalataJ बिना किसी अतिरिक्त कॉन्फ़िगरेशन के स्वचालित रूप से अटैच हो जाता है। यदि आपका कंटेनर JRE या अटैच सपोर्ट के बिना JDK का उपयोग करता है, तो आप -javaagent दृष्टिकोण का उपयोग करके प्रोफाइल कर सकते हैं। नीचे विकल्प: -javaagent का उपयोग देखें।


क्या खोजा जाता है

Section titled “क्या खोजा जाता है”

GalataJ निम्न में चल रहे Java प्रोसेस खोजता है:

  • Docker Desktop (Windows/macOS)
  • Docker Engine (Linux)
  • Docker Compose प्रोजेक्ट

जब तक कंटेनर आपकी लोकल मशीन पर चल रहा है, GalataJ इसे प्रोफाइल कर सकता है।


कंटेनरों की पहचान

Section titled “कंटेनरों की पहचान”

JVM सूची में, Docker कंटेनर दिखाते हैं:

  • कंटेनर नाम — वह नाम जो आपने कंटेनर को दिया
  • इमेज नाम — उपयोग की जा रही Docker इमेज
  • कंटेनर ID — पहचान के लिए छोटा ID

विकल्प: -javaagent का उपयोग

Section titled “विकल्प: -javaagent का उपयोग”

यदि स्वचालित अटैच काम नहीं करता — उदाहरण के लिए, आपका कंटेनर JRE इमेज या रनटाइम अटैच का समर्थन न करने वाले JDK का उपयोग करता है — तो आप -javaagent का उपयोग करके स्टार्टअप पर प्रोफाइलर एजेंट लोड कर सकते हैं। यह विधि JRE सहित किसी भी Java इमेज के साथ काम करती है।

निम्नलिखित विकल्पों में से एक चुनें:

अपनी सर्विस डेफिनिशन में निम्नलिखित जोड़ें — Dockerfile में कोई बदलाव आवश्यक नहीं:

services:
my-app:
# ... आपकी मौजूदा कॉन्फ़िगरेशन ...
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"

फिर अपनी सर्विसेज को रीस्टार्ट करें:

Terminal window
docker compose up

एजेंट JAR को अपनी प्रोजेक्ट डायरेक्टरी में कॉपी करें:

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

फिर अपने Dockerfile में ENTRYPOINT से पहले ये लाइनें जोड़ें:

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

फ़ाइल में कोई बदलाव आवश्यक नहीं — वॉल्यूम माउंट और एनवायरनमेंट फ्लैग सीधे पास करें:

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

महत्वपूर्ण नोट्स

Section titled “महत्वपूर्ण नोट्स”
  • com.mycompany.myapp को अपने एप्लिकेशन के बेस पैकेज से बदलें (जैसे, वह पैकेज जिसमें आपकी @SpringBootApplication क्लास है)।
  • Linux पर, extra_hosts (Compose) या --add-host (docker run) सेटिंग आवश्यक है ताकि कंटेनर होस्ट तक पहुंच सके। ऊपर के उदाहरण पहले से इसे शामिल करते हैं।
  • IDE विज़ार्ड का उपयोग करते समय, जनरेट किया गया कोड स्निपेट पहले से सही पैकेज भरा हुआ आता है।

केवल लोकल

GalataJ केवल आपकी लोकल मशीन पर चल रहे Docker कंटेनरों को प्रोफाइल कर सकता है। रिमोट Docker होस्ट (SSH, रिमोट Docker API) वर्तमान में समर्थित नहीं हैं।


कंटेनर दिखाई नहीं दे रहा

Section titled “कंटेनर दिखाई नहीं दे रहा”
  1. सुनिश्चित करें कि कंटेनर चल रहा है (रुका हुआ नहीं)
  2. प्रोफाइलर पैनल में रिफ्रेश पर क्लिक करें
  3. सत्यापित करें कि कंटेनर में Java प्रोसेस है
  4. GalataJ काम कर रहा है यह सुनिश्चित करने के लिए Health Check चलाएं

प्रोफाइलिंग शुरू नहीं हो रही

Section titled “प्रोफाइलिंग शुरू नहीं हो रही”
  1. सुनिश्चित करें कि आपके पास Pro लाइसेंस सक्रिय है
  2. जांचें कि Docker आपकी मशीन पर चल रहा है
  3. अपने IDE को रीस्टार्ट करने का प्रयास करें

अटैच विफल: jdk.attach उपलब्ध नहीं

यदि आपको इस तरह की एरर दिखाई दें:

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

कंटेनर JRE इमेज या अटैच सपोर्ट के बिना JDK का उपयोग कर रहा है।

समाधान A — JDK इमेज पर स्विच करें:

# पहले (स्वचालित अटैच के लिए विफल)
FROM eclipse-temurin:17-jre
# बाद में (GalataJ के साथ काम करता है)
FROM eclipse-temurin:17-jdk

अनुशंसित JDK इमेज: eclipse-temurin:17-jdk, amazoncorretto:17, azul/zulu-openjdk:17

इमेज को फिर से बनाएं और कंटेनर को दोबारा चलाएं, फिर प्रोफाइलिंग शुरू करें।

समाधान B — इसके बजाय -javaagent का उपयोग करें:

यदि आप JDK इमेज पर स्विच नहीं कर सकते, तो -javaagent दृष्टिकोण का उपयोग करें जो JRE सहित किसी भी Java इमेज के साथ काम करता है। ऊपर विकल्प: -javaagent का उपयोग देखें।


Pro में अपग्रेड करें

Docker प्रोफाइलिंग और अधिक प्राप्त करें

अपग्रेड करें →

सत्र इतिहास

समय के साथ कंटेनर प्रदर्शन की तुलना करें

और जानें →