garbage collection logging चालू करें और pause के timestamps को धीमी requests के सामने रखकर मिलाएं। अगर उछाल pauses से मेल खाते हैं, तो कोई flag छूने से पहले allocation rate, promotion और heap की गुंजाइश देखें, क्योंकि ज्यादातर pauses हद से ज्यादा allocate करने या बहुत छोटे heap से आते हैं। अगर मेल नहीं खाते, तो time to safepoint देखें, क्योंकि लंबा safepoint हर थ्रेड को रोक देता है और बिल्कुल garbage collection pause जैसा दिखता है।
इंटरव्यूअर यह क्यों पूछते हैं
tail latency की डिबगिंग सीनियर स्तर का हुनर है, और इंटरव्यूअर flags पर अंदाजा नहीं, सबूत चाहते हैं। pause logs को request traces से मिलाना, और यह जानना कि safepoints, page faults या container में शोर मचाता कोई पड़ोसी भी यही लक्षण दे सकते हैं, तरीके से सोचना दिखाता है। इससे यह भी पता चलता है कि आप वजह को application में ठीक करेंगे या collector tuning से उस पर पर्दा डालेंगे।
अपना जवाब कैसे स्ट्रक्चर करें
- डेटा जुटाएं: garbage collection logs और हर request का समय।
- pause की खिड़कियों को धीमी requests से मिलाएं।
- flags से पहले allocation rate और heap sizing की जांच करें।
- garbage collection से बाहर की वजहें भी सोचें, जैसे safepoints या प्लेटफॉर्म।
उदाहरण जवाब
मुझे दो timelines चाहिए। unified logging मुझे हर pause उसकी वजह और अवधि के साथ देती है, और मेरे traces मुझे धीमी requests देते हैं, तो पहला सवाल बस यह है कि दोनों मेल खाते हैं या नहीं। अगर खाते हैं, तो मैं flags बदलने से खुद को रोकता हूं और वजह देखता हूं। आमतौर पर service हर request पर बहुत ज्यादा allocate करती है, जैसे loop में बीच के lists बनाना या हर call पर serialized payload लॉग करना, तो उपाय है कम allocate करना। कभी heap बहुत तंग होता है और collections लगातार चलती रहती हैं, या G1 में कोड इतनी बड़ी arrays बनाता है कि वे humongous objects बन जाती हैं और बुरी तरह बर्ताव करती हैं। उसके बाद ही मैं low pause collector पर जाने के बारे में सोचूंगा, और उसे मुफ्त की जीत नहीं, एक ट्रेडऑफ मानूंगा। अगर pauses मेल नहीं खाते, तो मैं कहीं और देखता हूं: collection खुद छोटा होने पर भी time to safepoint लंबा हो सकता है, तो counted loop में फंसा एक थ्रेड सबको रोक देता है। मैंने एक मामला ऐसा भी खोजा है जो निकला container CPU throttling, जहां process को पूरी तरह schedule से हटा दिया गया था और कोई भी JVM tuning काम न आती।
जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।
देखें यह कैसे काम करता हैफॉलो-अप सवाल जिनकी उम्मीद रखें
- safepoint क्या है, और वहां तक पहुंचने में लंबा वक्त क्यों लग सकता है?
- किसी गर्म request path में आप allocation rate कैसे घटाएंगे?
- container CPU throttling JVM के metrics में कैसे दिखती है?
Java डेवलपर के और सवाल
आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।
मेरे सवाल प्रेडिक्ट करें