2012-02-02 16 views
6

मैं कैसंद्रा को hprof फ़ाइलों को डंप करने से रोकना चाहता हूं क्योंकि मुझे उनके उपयोग की आवश्यकता नहीं है।hprof फ़ाइलों को डंपिंग से कैसंद्रा को रोकना

मेरे पास बहुत सीमित डिस्क स्पेस भी है (डेटा के लिए 100 जीबी में से 50 जीबी का उपयोग किया जाता है), और ये फ़ाइलें "स्टॉप" कहने से पहले सभी डिस्क स्पेस को निगलती हैं।

मुझे इसके बारे में कैसे जाना चाहिए?

क्या कोई शेल स्क्रिप्ट है जिसे मैं समय-समय पर इन फ़ाइलों को मिटाने के लिए उपयोग कर सकता हूं?

उत्तर

7

का उपयोग करके क्रोंटैब के बारे में अधिक जानकारी प्राप्त कर सकते हैं ऐसा इसलिए होता है क्योंकि कैसंद्रा -XX:+HeapDumpOnOutOfMemoryError जावा विकल्प से शुरू होता है। यदि आप विश्लेषण करना चाहते हैं तो कौन सी अच्छी चीजें हैं। इसके अलावा, अगर आपको बहुत सारे ढेर-डंप मिल रहे हैं जो इंगित करता है कि आपको शायद कैसंद्रा को उपलब्ध स्मृति को ट्यून करना चाहिए।

मैंने कोशिश नहीं की है। लेकिन इस विकल्प को ब्लॉक करने के लिए, $CASSANDRA_HOME/conf/cassandra-env.sh

JVM_OPTS="$JVM_OPTS -XX:+HeapDumpOnOutOfMemoryError" 

वैकल्पिक रूप में निम्नलिखित पंक्ति टिप्पणी, तो आप इस ब्लॉक के रूप में अच्छी तरह से टिप्पणी कर सकते हैं, लेकिन वास्तव में नहीं की आवश्यकता है, मुझे लगता है। यह ब्लॉक मुझे लगता है कि 1.0+ संस्करण में उपलब्ध है। मुझे यह 0.7.3 में नहीं मिल रहा है।

# set jvm HeapDumpPath with CASSANDRA_HEAPDUMP_DIR 
if [ "x$CASSANDRA_HEAPDUMP_DIR" != "x" ]; then 
    JVM_OPTS="$JVM_OPTS -XX:HeapDumpPath=$CASSANDRA_HEAPDUMP_DIR/cassandra-`date +%s`-pid$$.hprof" 
fi 

अगर यह काम करता है तो मुझे बताएं।


अद्यतन

... मुझे लगता है कि यह इसे बाहर फेंक जब कैसेंड्रा दुर्घटनाओं/बंद हो जाता है JVM है। ऐसा होने से रोकने के लिए कोई रास्ता?

आप JVM heapdump पूरी तरह निष्क्रिय करने के लिए, यहाँ how to disable creating java heap dump after VM crashes?

+0

मैं इसे भी टिप्पणी करने के बारे में सोच रहा था। लेकिन मैंने देखा है कि hprof फाइलें "cassandra-NNN.hprof" टेम्पलेट का पालन नहीं करती हैं बल्कि बल्कि "pid-XXX.hprof" का पालन करती हैं, इसलिए मुझे लगता है कि जब यह कैसंड्रा क्रैश/बंद हो जाता है तो यह जेएमवी फेंक रहा है। ऐसा होने से रोकने के लिए कोई रास्ता? –

+1

@ Salocin.TEN अद्यतन देखें – Nishant

+0

$ CASSANDRA_HOME/conf/cassandra-env.sh में ब्लॉक को टिप्पणी करना वास्तव में काम नहीं करता था। लेकिन लिंक और .prprof हटाने क्रॉन नौकरी के लिए धन्यवाद, सब कुछ ठीक काम कर रहा है। एक बार फिर से मदद के लिए धन्यवाद। –

1

मैं मानता हूं कि मैंने कैसंद्रा का उपयोग नहीं किया है, लेकिन मैं जो कह सकता हूं, उससे किसी भी एचप्रोफ फाइलों को डंप नहीं करना चाहिए जब तक कि आप इसे संकलित समय में सक्षम नहीं करते हैं, या प्रोग्राम को आउटफमेमरी अपवाद का अनुभव होता है। तो वहां देखने की कोशिश करो।

शैल स्क्रिप्ट के संदर्भ में, यदि फ़ाइलों को किसी विशिष्ट स्थान पर डंप किया जा रहा है तो आप सभी * .hprof फ़ाइलों को हटाने के लिए इस कमांड का उपयोग कर सकते हैं।

find /my/location/ -name *.hprof -delete 

यह है कि सभी फ़ाइलें खोज से मेल खाते को हटा देता है find से -delete निर्देशों का उपयोग कर रहा है। अधिक खोज विकल्प खोजने के लिए मैन पेज को देखें यदि आपको इसे और अधिक संकीर्ण करने की आवश्यकता है।

आप किसी दिए गए समय पर एक स्क्रिप्ट चलाने के लिए cron का उपयोग कर सकते हैं, जो आपके "समय-समय पर" आवश्यकता को पूरा करेगा, अधिकांश लिनक्स डिस्ट्रोज़ को क्रॉन इंस्टॉल किया गया है, और crontab फ़ाइल का काम बंद कर दिया गया है। आप man crontab

+0

धन्यवाद! मैंने यह भी पता लगाया है! क्योंकि जब मैं कैसंड्रा इंस्टेंस को निलंबित करता हूं तो वास्तव में hprof फ़ाइलें आ रही हैं, क्योंकि उन्हें "cassandra-XXX.hprof" के बजाय "pid-XXX.hprof" नाम दिया गया है शैल स्क्रिप्ट के लिए धन्यवाद। मैं उन्हें लागू करूंगा। :) –

0

देखना भले ही आप heapdump पथ यह अभी भी काम नहीं करेगा को इंगित करने के cassandra-env.sh अद्यतन चाहते हैं। कारण यह था कि अपस्टार्ट स्क्रिप्ट/आदि/init से।घ/कैसेंड्रा वहाँ इस लाइन जो कि डिफ़ॉल्ट बनाता है HeapDump पथ

start-stop-daemon -S -c cassandra -a /usr/sbin/cassandra -b -p "$PIDFILE" -- \ 
    -p "$PIDFILE" -H "$heap_dump_f" -E "$error_log_f" >/dev/null || return 2 

मैं एक नवोदय विशेषज्ञ लेकिन क्या मैं सिर्फ परम जो डुप्लिकेट बनाता है हटा दिया गया था किया था नहीं कर रहा हूँ है। ps aux के माध्यम से कैसंड्रा प्रक्रिया की जांच करते समय एक और अजीब अवलोकन भी आप देखेंगे कि आप कुछ पैरामीटर दो बार लिखे जाएंगे। यदि आप cassandra-env.sh स्रोत करते हैं और $ JVM_OPTS प्रिंट करते हैं तो आप उन चरों को ठीक से देखेंगे।