तो हर दो दिनों में उबंटू पर मेरी जावा प्रक्रिया स्वचालित रूप से मारे जाती है, और मैं यह नहीं समझ सकता कि क्यों।उबंटू पर मेरी जावा प्रक्रिया को मारने में कुछ रहता है, किसी को पता है क्यों?
मेरे बॉक्स में 35.84 जीबी रैम है, जब मैं अपनी जावा प्रक्रिया लॉन्च करता हूं तो मैं इसे -Xmx28g पैरामीटर पास करता हूं, इसलिए इसे अधिकतम रैम से कम तरीके से उपयोग करना चाहिए।
मैं jstat भाग गया इस प्रकार है: jstat से उत्पादन का
# jstat -gccause -t `pgrep java` 60000
पिछले कुछ लाइनों के ठीक पहले प्रक्रिया की मौत हो गई थी:
Time S0 S1 E O P YGC YGCT FGC FGCT GCT LGCC GCC
14236.1 99.98 0.00 69.80 99.40 49.88 1011 232.305 11 171.041 403.347 unknown GCCause No GC
14296.2 93.02 0.00 65.79 99.43 49.88 1015 233.000 11 171.041 404.041 unknown GCCause No GC
14356.1 79.20 0.00 80.50 99.55 49.88 1019 233.945 11 171.041 404.986 unknown GCCause No GC
14416.2 0.00 99.98 24.32 99.64 49.88 1024 234.945 11 171.041 405.987 unknown GCCause No GC
यह वही है में नीचे चला गया प्रतीत हो रहा है/इस समय के आसपास var/log/syslog: https://gist.github.com/1369135
मेरे जावा ऐप के अलावा इस सर्वर पर वास्तव में कुछ भी नहीं चल रहा है। क्या चल रहा है?
संपादित करें: मैं जावा संस्करण 1.6.0_20 चला रहा हूं, स्टार्टअप पर जावा पर जा रहे एकमात्र उल्लेखनीय पैरामीटर "-सर्वर -Xmx28g" हैं। मैं एक एप्लिकेशन सर्वर का उपयोग नहीं कर रहा हूं लेकिन मेरा ऐप "सरल वेब ढांचे" को एम्बेड करता है।
अधिकतम भौतिक राम यह नहीं समझता कि प्रक्रिया कितनी उपयोग कर सकती है। एरिक लिपर्ट के पास इस पर एक शानदार पोस्ट था। मुझे पता है कि पोस्ट विंडोज/.NET केंद्रित है, लेकिन यह भी शानदार है। जिज्ञासा से बाहर, क्या आप OutOfMemoryError को पकड़ने का प्रयास कर सकते हैं और यह पुष्टि करने के लिए लॉग इन कर सकते हैं कि यह कारण है? –
मैं stdout और stderr लॉगिंग कर रहा हूं, जो मुझे विश्वास है कि ओओएम कहाँ जायेगा, और मुझे ऐसा कुछ भी दिखाई नहीं दे रहा है जो ओओएम अपवाद को इंगित करे ... मेरे अनुभव में एक ओओएम परिणाम छोड़ने वाले ऐप में परिणाम देता है। इस मामले में ऐसा लगता है कि ओएस द्वारा ऐप की हत्या हुई थी। – sanity