कर्नेल ने ऐसा होने से पहले सामान का एक गुच्छा लॉग किया होगा, लेकिन इसमें से अधिकांश /var/log/messages
आपके (r)syslogd
द्वारा कॉन्फ़िगर किए जाने के आधार पर नहीं होगा । प्रयत्न, कोशिश:
grep oom /var/log/*
grep total_vm /var/log/*
पूर्व को केवल एक या दो स्थानों पर बार का एक गुच्छा दिखाना चाहिए। यह वह फ़ाइल है जिसे आप देखना चाहते हैं।
फ़ाइलों में से एक में मूल "मेमोरी से बाहर" लाइन ढूंढें total_vm
। एक मिनट के लिए तीस सेकंड (अधिक हो सकता है, कम हो सकता है) उस रेखा से पहले आपको कुछ ऐसा मिलेगा:
kernel: foobar invoked oom-killer: gfp_mask=0x201da, order=0, oom_score_adj=0
आपको उस लाइन और "आउट ऑफ़ मेमोरी" लाइन के बीच में एक टेबल भी मिलनी चाहिए, जैसे हेडर:
[ pid ] uid tgid total_vm rss nr_ptes swapents oom_score_adj name
हो सकता है कि यह आपको पहले से पता होने की तुलना में बहुत अधिक न बताए, लेकिन क्षेत्र हैं:
- pid प्रक्रिया आईडी।
- यूआईडी यूजर आईडी।
- tgid थ्रेड समूह ID।
- Total_vm वर्चुअल मेमोरी उपयोग (4 kB पृष्ठों में)
- rss निवासी स्मृति उपयोग (4 kB पृष्ठों में)
- nr_ptes पृष्ठ तालिका प्रविष्टियाँ
- swapents प्रविष्टियों स्वैप
- oom_score_adj आमतौर पर 0; एक कम संख्या इंगित करती है कि ओओएम हत्यारे के आह्वान पर प्रक्रिया की मृत्यु होने की संभावना कम होगी।
आप ज्यादातर अनदेखी कर सकते हैं nr_ptes
और swapents
हालांकि मेरा मानना है कि ये निर्धारित करने में कारक हैं कि कौन मारा जाता है। यह जरूरी नहीं कि सबसे अधिक स्मृति का उपयोग करने वाली प्रक्रिया है, लेकिन यह बहुत संभावना है। चयन प्रक्रिया के बारे में अधिक जानकारी के लिए, यहाँ देखें । मूल रूप से, उच्चतम ओओम स्कोर के साथ समाप्त होने वाली प्रक्रिया को मार दिया जाता है - यह "स्कोर" "आउट ऑफ मेमोरी" लाइन पर रिपोर्ट किया गया है; दुर्भाग्य से अन्य स्कोर की सूचना नहीं है, लेकिन यह तालिका कारकों के संदर्भ में कुछ सुराग प्रदान करती है।
फिर, यह शायद स्पष्ट को रोशन करने की तुलना में बहुत अधिक नहीं करेगा: सिस्टम स्मृति से बाहर चला गया और mysqld
मरने के लिए चुना गया था क्योंकि मारने से यह सबसे अधिक संसाधन जारी करेगा । यह आवश्यक नहीं है कि mysqld
कुछ भी गलत हो रहा है। आप यह देखने के लिए तालिका में देख सकते हैं कि क्या कुछ और समय पर लाइन से बाहर हो गया, लेकिन कोई स्पष्ट अपराधी नहीं हो सकता है: सिस्टम केवल मेमोरी से बाहर चला सकता है क्योंकि आपने गलत तरीके से रनिंग प्रक्रियाओं को गलत या गलत समझा है।
dmesg
?