Linux कर्नेल ट्यूनिंग

ताकि सिस्टम अधिक सहसंबद्धता का समर्थन कर सके, इसके लिए आवश्यक है कि इवेंट एक्सटेंशन स्थापित करें, इसके अलावा लिनक्स कर्नेल का अनुकूलन भी अत्यंत महत्वपूर्ण है, नीचे दिए गए प्रत्येक अनुकूलन बहुत ही महत्वपूर्ण हैं, कृपया उन्हें बारी-बारी से पूरा करना सुनिश्चित करें।

पैरामीटर विवरण:

max-file: सिस्टम स्तर पर खोले जा सकने वाले फ़ाइल हैंडल की संख्या को दर्शाता है। यह पूरे OS के लिए है, उपयोगकर्ता के लिए नहीं।

ulimit -n: प्रक्रिया स्तर पर खोले जा सकने वाले फ़ाइल हैंडल की संख्या को नियंत्रित करता है। यह वर्तमान shell के वर्तमान उपयोगकर्ता और उसके द्वारा शुरू की गई प्रक्रियाओं के लिए फ़ाइल हैंडल को नियंत्रित करता है।

सिस्टम स्तर पर खोले जा सकने वाले फ़ाइल हैंडल की संख्या देखें: cat /proc/sys/fs/file-max

फ़ाइल खोलें /etc/sysctl.conf, निम्नलिखित सेटिंग जोड़ें

# यह पैरामीटर सिस्टम के TIME_WAIT की संख्या को सेट करता है, यदि डिफ़ॉल्ट मान से अधिक हो जाता है तो इसे तुरंत साफ़ कर दिया जाएगा
net.ipv4.tcp_max_tw_buckets = 20000
# सिस्टम में प्रत्येक पोर्ट के लिए अधिकतम सुनने की कतार की लंबाई को परिभाषित करता है, यह एक वैश्विक पैरामीटर है
net.core.somaxconn = 65535
# जिन कनेक्शन अनुरोधों के लिए अभी तक उत्तर नहीं मिला है, कतार में रखे जा सकने वाले अधिकतम संख्या
net.ipv4.tcp_max_syn_backlog = 262144
# जब प्रत्येक नेटवर्क इंटरफ़ेस पर डेटा पैकेट प्राप्त होने की दर कर्नेल द्वारा इन पैकेट को संभालने की दर से तेज होती है, तो कतार में भेजे जाने वाले पैकेट की अधिकतम संख्या
net.core.netdev_max_backlog = 30000
# यह विकल्प NAT नेटवर्क में स्थित क्लाइंट को समय पूरा करने का कारण बनता है, इसे 0 के लिए सेट करने की सिफारिश की जाती है। लिनक्स ने 4.12 कर्नेल से tcp_tw_recycle कॉन्फ़िगरेशन को हटा दिया है, यदि "No such file or directory" एरर मिले तो इसे अनदेखा करें
net.ipv4.tcp_tw_recycle = 0
# प्रणाली में सभी प्रक्रियाओं द्वारा खोले जा सकने वाले फ़ाइलों की कुल संख्या
fs.file-max = 6815744
# फ़ायरवॉल ट्रैकिंग तालिका का आकार। ध्यान दें: यदि फ़ायरवॉल सक्रिय नहीं है, तो "net.netfilter.nf_conntrack_max" एक अज्ञात कुंजी है, इसे अनदेखा करें
net.netfilter.nf_conntrack_max = 2621440
net.ipv4.ip_local_port_range = 10240 65000

रन करें sysctl -p तुरंत प्रभाव में आएगा।

व्याख्या:

/etc/sysctl.conf में सेट करने के लिए कई विकल्प हैं, अन्य विकल्पों को अपने वातावरण की आवश्यकता के अनुसार सेट कर सकते हैं।

खोली गई फ़ाइलों की संख्या

सिस्टम खोली गई फ़ाइलों की संख्या सेट करें, उच्च सहसंबद्धता के तहत too many open files समस्या को हल करें। यह विकल्प सीधे एकल प्रक्रिया में समाहित क्लाइंट कनेक्शन की संख्या को प्रभावित करता है।

Soft open files लिनक्स सिस्टम पैरामीटर है, जो सिस्टम की एकल प्रक्रिया द्वारा खोली जा सकने वाली अधिकतम फ़ाइल हैंडल की संख्या को प्रभावित करता है, यह मान लंबी कनेक्शन अनुप्रयोगों जैसे चैट में एकल प्रक्रिया द्वारा बनाए रखे जा सकने वाले उपयोगकर्ता कनेक्शन की संख्या को प्रभावित करेगा, ulimit -n चलाकर इस पैरामीटर के मान को देखा जा सकता है, यदि यह 1024 है, तो इसका मतलब है कि एकल प्रक्रिया अधिकतम केवल 1024 या इससे भी कम (क्योंकि अन्य फ़ाइल हैंडल खोले गए हैं) को बनाए रख सकती है। यदि 4 प्रक्रियाएँ उपयोगकर्ता कनेक्शन को बनाए रखती हैं, तो पूरी एप्लिकेशन एक साथ 4*1024 कनेक्शन को बनाए रखने में सक्षम नहीं होगी, इससे यह कहा जा सकता है कि अधिकतम केवल 4x1024 उपयोगकर्ता ऑनलाइन हो सकते हैं, यह सेटिंग बढ़ाई जा सकती है ताकि सेवा अधिक TCP कनेक्शन को बनाए रख सके।

Soft open files को संशोधित करने के तीन तरीके:

पहला तरीका: टर्मिनल में सीधे ulimit -HSn 102400 चलाएँ, फिर workerman को पुनः चालू करें।

यह केवल वर्तमान टर्मिनल में प्रभावी है, बाहर निकलने के बाद, open files फिर से डिफ़ॉल्ट मान पर लौट जाता है।

दूसरा तरीका: /etc/profile फ़ाइल के अंत में एक पंक्ति जोड़ें ulimit -HSn 102400, इस तरह हर बार टर्मिनल में लॉग इन करते समय, यह स्वचालित रूप से निष्पादित होगा। परिवर्तन के बाद workerman को पुनः चालू करने की आवश्यकता है।

तीसरा तरीका: open files के मान को स्थायी रूप से प्रभावी बनाने के लिए, कॉन्फ़िगरेशन फ़ाइल को संशोधित किया जाना चाहिए: /etc/security/limits.conf। इस फ़ाइल के अंत में जोड़ें:

* soft nofile 1024000
* hard nofile 1024000
root soft nofile 1024000
root hard nofile 1024000

इस विधि के लिए सर्वर को पुनः चालू करना आवश्यक है।