2011-05-30 11 views
9

इष्टतम ulimit और fs.file-max मानों को "स्वयं की गणना" की आवश्यकता है। कृपया "विभिन्न लिनक्स डिस्ट्रोज़ में उन सीमाओं को कैसे सेट करें" प्रश्नों के साथ संघर्ष न करें।अपने स्वयं के सर्वर की जरूरतों के अनुसार इष्टतम ulimit और fs.file-max मानों की गणना "गणना" की आवश्यकता है

मैं पूछ रहा हूँ:

  1. वहाँ विस्तार से समझाने के लिए किसी भी अच्छा मार्गदर्शक है, ulimit के लिए इस्तेमाल किया मानकों? (> 2.6 श्रृंखला कर्नल)
  2. क्या fs.file-max उपयोग मीट्रिक दिखाने के लिए कोई अच्छी मार्गदर्शिका है? http://www.faqs.org/docs/securing/chap6sec72.html "राम के हर 4M के लिए 256 की तरह कुछ उचित हम है:

असल में वहाँ कुछ पुराने संदर्भ मैं नेट पर मिल सकता है कर रहे हैं रैम 128 एमबी के साथ एक मशीन के लिए यानी, यह 8192 के लिए सेट - 128/4 = 32 32 * 256 = 8192 "

किसी भी अद्यतित संदर्भ की सराहना की जाती है।

+0

उल्लेख किया गया कि मुझे तकनीकी लेख की आवश्यकता है। – Kunthar

उत्तर

14

fs.file-max के लिए, मुझे लगता है कि लगभग सभी मामलों में आप इसे अकेला छोड़ सकते हैं। यदि आप किसी प्रकार का बहुत व्यस्त सर्वर चला रहे हैं और वास्तव में फ़ाइल हैंडल से बाहर चल रहे हैं, तो आप इसे बढ़ा सकते हैं - लेकिन जिस मूल्य को आप इसे बढ़ाने के लिए आवश्यक हैं, वह इस बात पर निर्भर करेगा कि आप किस प्रकार का सर्वर चला रहे हैं और लोड क्या है उस पर है आम तौर पर आपको इसे तब तक बढ़ाने की आवश्यकता होगी जब तक कि आप फ़ाइल हैंडल से बाहर नहीं निकलते, या जब तक आपको एहसास न हो कि लोड को संभालने के लिए आपको अधिक मेमोरी या अधिक सिस्टम की आवश्यकता है। डिफ़ॉल्ट रूप से फ़ाइल-मैक्स को कम करके "ट्यूनिंग" चीजों से लाभ इतना कम है कि इसके बारे में सोचने योग्य नहीं है - मेरा फोन 83588 के एफएस-अधिकतम मूल्य के साथ ठीक काम करता है।

वैसे, आधुनिक कर्नेल सिस्टम में स्मृति की मात्रा के आधार पर पहले से ही फ़ाइल-अधिकतम सेट करने के लिए अंगूठे के नियम का उपयोग करता है; 2.6 कर्नेल में fs/file_table.c से:

/* 
    * One file with associated inode and dcache is very roughly 1K. 
    * Per default don't use more than 10% of our memory for files. 
    */ 

    n = (mempages * (PAGE_SIZE/1024))/10; 
    files_stat.max_files = max_t(unsigned long, n, NR_FILE); 

और files_stat.max_filesfs.file-max की सेटिंग है; यह प्रत्येक 1 एमबी रैम के लिए लगभग 100 होने वाला होता है।

पाठ्यक्रम के उलझन उपयोगकर्ताओं या प्रक्रियाओं द्वारा आवंटित संसाधनों को सीमित करने के बारे में हैं। यदि आपके पास एकाधिक उपयोगकर्ता या ऐसी कोई अन्य स्थिति है, तो आप यह तय कर सकते हैं कि आप सिस्टम संसाधनों को विभाजित करना और मेमोरी उपयोग, प्रक्रियाओं की संख्या आदि को सीमित करना चाहते हैं। आप निर्धारित सीमाओं के विवरण के लिए निश्चित मार्गदर्शिका setrlimit man page (और निश्चित रूप से कर्नेल स्रोत)।

+0

कोई PAGE_SIZE मान प्राप्त करने के लिए, "getconf PAGE_SIZE" कमांड का उपयोग करें, अधिकतर यह 4096 है। – Gnought

2

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

fs.file-अधिकतम = 6,815,744 # इस मोटे तौर पर एक 70GB राम प्रणाली

एक ही उपयोगकर्ता rlimits (nofile) के लिए सच है के लिए डिफ़ॉल्ट सीमा नहीं है, तो आप का उपयोग करेगा 65535

ध्यान दें कि दोनों अनुशंसाएं केवल समर्पित अनुप्रयोगों और विश्वसनीय शैल उपयोगकर्ताओं के साथ समर्पित सर्वर के लिए अच्छी हैं। एक बहु-उपयोगकर्ता इंटरैक्टिव शैल होस्ट में एक प्रतिबंधित अधिकतम सेटिंग होनी चाहिए।

+0

आपको 1 एमबी प्रति 9 7 फाइलों का अनुपात कहां मिलता है? उत्तर के लिए भी धन्यवाद :) – greggles

+2

@ एग्रीगल्स मैं वास्तव में याद नहीं करता हूं यह कुछ लिनक्स विक्रेताओं से ऑरैकल या सैप के लिए गाइड का आकार बदल रहा था। वास्तविक फॉर्मुलर "1k/filehandle के आधार पर स्मृति का 10% उपयोग करें" जैसा कि यहां देखा जा सकता है: https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/tree/ fs/file_table.C# n319 – eckes

+0

सटीक होने के लिए, यह 65 जीबी राम होना चाहिए, फ़ाइल-अधिकतम = 6815744 <- (65 * 1024 * 1024 * 1024/1k) * 10% – Gnought

संबंधित मुद्दे