फ़ाइल-एनआर और एलएसओएफ की गिनती खुली फाइलों पर क्यों भिन्न होती है? [बन्द है]


19

मैं अचानक एक समस्या में चल रहा हूं; मेरे सभी एप्लिकेशन और सर्वर ठीक चल रहे थे और अचानक मुझे खुली फ़ाइलों की संख्या दिखाई दे रही है।

मैं इसे इस कमांड से जाँच रहा हूँ:

cat /proc/sys/fs/file-nr

जब मैं इसे दिखाता 44544 0 128000हूं, तो 44544 खुली फाइलों की संख्या है।

लेकिन जब मैं इस कमांड के साथ जांच करता हूं - lsof | wc -l यह दिखाता है - 28384।

तो कौन सा सही है?

मेरी अधिकतम खुली फ़ाइलों की सीमा 65535 है

ulimit -a
open files                      (-n) 65535

मैं शीर्ष 5 प्रक्रियाओं को जानना चाहता हूं जो अधिक खुली फ़ाइलों का उपयोग कर रही हैं। मैं इसे प्राप्त कर सकता हूं, lsofलेकिन यहां दिखाई गई गिनती मेरे द्वारा बताई गई अन्य कमांड से बहुत अलग है।

क्या मुझे इस कमांड द्वारा गिनाई गई प्रक्रियाओं का विवरण मिल सकता है cat /proc/sys/fs/file-nr?

नीचे दिए गए लिंक के अनुसार यह कहता है कि हम नहीं कर सकते, कैसे खुला फ़ाइल डिस्क्रिप्टर प्रदर्शित करें , लेकिन lsof कमांड का उपयोग नहीं

क्या मेरे आसपास कोई काम है? मुझे यह खोजने की आवश्यकता है कि अचानक से अधिक खुली फ़ाइलों का उपयोग करके कौन सी प्रक्रिया शुरू हुई।

अद्यतन समस्या के लिए क्षमा लोग। मुझे वह गलती मिली जो मैं कर रहा था मैं lsof की जाँच नहीं कर रहा था | wc -l रूट से। यही कारण है कि मैं एक बड़ा अंतर देख रहा था।

अभी भी फ़ाइल के आउटपुट और -sr के बीच अंतर है wc -l (रूट से)। lsof काउंट फाइल -nr काउंट से अधिक है। इसका कारण यह है, फ़ाइल -nr कुछ निर्देशिकाओं (जो कि lsof द्वारा फाइल के रूप में मानी जाती हैं) को अनदेखा करती है, मुझे यह कारण Google पर एक शोध से पता चला। वैसे भी! सभी मदद के लिए धन्यवाद दोस्तों!



क्या lsof | wc -l वास्तव में नकारात्मक संख्या दिखाई दे रही है?
जो सेवेल

3
यह एक नकारात्मक संकेत नहीं था, इसकी हाइफ़न!
वसंत नाग केवी

जवाबों:


8

यहाँ खेलने में दो सवाल लगते हैं। सबसे पहले, फ़ाइल-एनआर और फ़ाइल-मैक्स संरचनाओं का पूर्ण प्रलेखन पाया जा सकता है

https://www.kernel.org/doc/Documentation/sysctl/fs.txt

यह उस फ़ाइल के फ़ील्ड को इस प्रकार परिभाषित करता है:

फ़ाइल-एनआर में तीन मान आवंटित फ़ाइल हैंडल की संख्या, आवंटित लेकिन अप्रयुक्त फ़ाइल हैंडल की संख्या और फ़ाइल हैंडल की अधिकतम संख्या को दर्शाते हैं। लिनक्स 2.6 हमेशा 0 को मुफ्त फ़ाइल हैंडल की संख्या के रूप में रिपोर्ट करता है - यह कोई त्रुटि नहीं है, इसका मतलब यह है कि आवंटित फ़ाइल हैंडल की संख्या उपयोग किए गए फ़ाइल हैंडल की संख्या से बिल्कुल मेल खाती है।

उम्मीद है कि यह काफी स्पष्ट है। ऊपर दिए गए धागे में दूसरे प्रश्न का उत्तर दिया गया है ( /server/485262/number-of-file-descriptors-different-between-proc-sys-fs-file-nr-and-proc- pi ) और या तो विकसित करने के लिए लगता है

  1. यदि आप किसी प्रक्रिया या उपयोग में फ़ाइल डिस्क्रिप्टर का अच्छा सन्निकटन प्राप्त करना चाहते हैं, तो "lsof का उपयोग करें" और आउटपुट को उचित रूप से फ़िल्टर करें
  2. फ़ाइल डिस्क्रिप्टर के उपयोग के समय में स्नैपशॉट प्राप्त करने के लिए / proc फाइलसिस्टम (और अभी भी आउटपुट को फ़िल्टर करना है) के माध्यम से पार जाना।

इसके लिए सटीक मेट्रिक्स प्राप्त करने की कठिनाई महत्वपूर्ण है, क्योंकि किसी भी बिंदु पर एफडी की संख्या का उपयोग किसी सिस्टम पर बहुत तेजी से उतार-चढ़ाव कर सकता है।

निम्नलिखित धागा 'lsof' दृष्टिकोण के लिए एक फ़िल्टरिंग योजना का सुझाव देता है:

/server/396872/why-or-how-does-the-number-of-open-file-descriptors-in-use-by-root-exceed-ulim


मेरे सवाल को अद्यतन किया। लेकिन सभी जानकारी के लिए धन्यवाद वहाँ।
वसंत नाग केवी

लेकिन यह कैसे संभव है, ulimitमेरे लिए यह कहता है कि मेरे पास अधिकतम 1024 फाइलें खुली हो सकती हैं, अगर lsof | wc -lमैं कहूं कि मेरे पास 1545 पहले से हैं?
Nakilon

कृपया पर मैनुअल पृष्ठों को पढ़ने lsofऔर ulimitअपने प्रश्न का उत्तर के लिए।
थॉमस एन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.