यह स्वीकार करें कि Ubuntu 14.04 एक mpm_prefork मॉड्यूल के माध्यम से चलने वाले PHP के साथ Apache 2 का उपयोग करता है , जिनमें से एक संपादन योग्य फ़ाइल /etc/apache2/mods-enabled/mpm_prefork.conf में है। इसके अलावा, यह मान लें कि Apache 2.4 में शुरू होने वाले, MaxClients को अब MaxRequestWorkers के रूप में नाम दिया गया है , और इसलिए MaxClients के बारे में किसी भी दस्तावेज को MaxRequestWorkers पर स्विच करने की आवश्यकता है।
अस्थायी रूप से निम्न आदेश के साथ Apache वेब सेवा बंद करें:
sudo service apache2 stop
- 5 सेकंड तक प्रतीक्षा करें और फिर निम्न कमांड का पता लगाएं कि आपके पास मुफ्त में कितनी वर्चुअल मेमोरी है:
सूद-मुक्त
मेम पढ़ें: लाइन और मुफ्त कॉलम को देखें। इसे राम की उस मात्रा के रूप में मानें जिसे आप अपाचे को समर्पित कर सकते हैं, हालांकि मैं आमतौर पर बीफ़ सर्वर पर 2GB (जैसा कि> 4GB) या लाइटर सर्वर पर 1GB घटाता हूं। इसलिए, यदि मुफ्त कॉलम में कहा गया है कि मेरे पास 13GB मुफ्त है, तो मैं Apache 11GB देने की सलाह दूंगा। वह आधारभूत है। यदि हम कभी-कभी लॉग में किसी डेटाबेस समस्या का सामना करते हैं (जैसे कि 3 दिन की अवधि में लॉग में 3 बार) कि इसे अधिक मेमोरी की आवश्यकता है, तो हम विचार कर सकते हैं कि हमारे पास 11GB के बजाय खेलने के लिए केवल 10GB था (इस मामले में) )। अगर हम अपाचे लॉग में सामना करते हैं कि सर्वर को अधिक मैक्सिरेस्टवेस्टर की आवश्यकता है, तो यह एक अलग मुद्दा है जिसे मैं नीचे संबोधित करूंगा।
- Apache वेब सर्वर शुरू करें।
sudo service apache2 start
10 ब्राउज़र टैब की तरह खोलें, अपनी वेबसाइट से कुछ लंबे या धीमे लोडिंग पृष्ठों से कनेक्ट करें, और प्रत्येक टैब पर 3-4 बार ताज़ा करें।
ऐसा करने के बाद, तेजी से अब निम्नलिखित कमांड चलाएँ:
sudo ps -ylC apache2 | awk '{x + = $ 8; y + = 1} END {प्रिंट "अपाचे मेमोरी यूसेज (एमबी):" x / 1024; "औसत प्रक्रिया का आकार (एमबी):" x / ((y-1) * 1024)} '
इसे 5 बार तेजी से चलाएं।
औसत प्रक्रिया आकार मूल्य और औसत मूल्य देखें जो आपके द्वारा चलाए गए 5 गुना के बीच है।
अब निम्नलिखित गणित करें, और जीबी को एमबी में बदलना सुनिश्चित करें ताकि सभी नंबर एमबी मान में हों। तो, 1024 गुणा गुणा करें या 1024 से विभाजित करें, इस पर निर्भर करता है कि आपको किस रास्ते पर जाना है।
MaxRequestWorkers = बेसलाइन फ्री (बफर स्पेस के साथ) / औसत प्रक्रिया का आकार
उदाहरण के लिए, मेरे पास 14 जीबी सर्वर था, लेकिन जब अपाचे को रोका गया तो सर्वर ने दिखाया कि इसमें बेकार में 1 जीबी रैम का इस्तेमाल किया गया है। मैं तब ओएस के लिए कुछ अतिरिक्त बफर स्थान में 1 जीबी प्रदान करता हूं, अगर उसे इसकी आवश्यकता होती है। इसका मतलब है कि मेरे पास 12GB का बेसलाइन फ्री होगा। अब मुझे इसे GB से MB में बदलना होगा, और इसलिए मैंने 12 x 1024 को गुणा किया और 12288 प्राप्त किया। 12288 MB मेरी बेसलाइन फ्री वैल्यू है। मेरे मामले में मैंने देखा कि औसत प्रक्रिया का आकार 21 एमबी था। तो, मैं 12288/21 लेता हूं और मुझे लगभग 585 मिलता है। अब, यह सामान्य है कि इस मूल्य के नीचे sysops दौर है, और इसलिए मुझे 580 मिला।
- फ़ाइल /etc/apache2/mods-enabled/mpm_prefork.conf को संपादित करें और इसे निम्नलिखित चूक पर सेट करने पर विचार करें, XXX को आपकी MaxRequestWorkers गणना के साथ प्रतिस्थापित करें:
`<IfModule mpm_prefork_module>`
StartServers 2
MinSpareServers 2
MaxSpareServers 5
MaxRequestWorkers XXX
ServerLimit XXX
MaxConnectionsPerChild 0
</IfModule>
ध्यान दें कि आप सर्वरलिमिट पैरामीटर वहां नहीं देख सकते हैं। इसे जोड़ें। यह पैरामीटर 256 में डिफॉल्ट करता है यदि मौजूद नहीं है, लेकिन MaxRequestWorkers के समान मूल्य की आवश्यकता है या आपको एक त्रुटि मिलेगी।
आपके अपाचे कॉन्फ़िगरेशन में एक और महत्वपूर्ण कारक /etc/apache2/apache2.conf फ़ाइल टाइमआउट चर के साथ है और इसे सेकंड में मापा जाता है। यह कितनी देर तक आप सर्वर से भेज या प्राप्त कर सकते हैं इससे पहले कि यह बाहर हो। आपको फ़ाइल अपलोड या फ़ाइल डाउनलोड को भी ध्यान में रखना होगा, जैसे कि अगर आपके पास एक वेबसाइट है जहाँ लोग उदाहरण के लिए CSV या अन्य बड़ी फ़ाइलों को अपलोड या डाउनलोड कर सकते हैं। और आपको एक व्यस्त डेटाबेस सर्वर को ध्यान में रखने की आवश्यकता है और जहां आपको पृष्ठों के समय से पहले कुछ समय प्रदान करने की आवश्यकता हो सकती है। जितना छोटा आप उस टाइमआउट चर को बनाते हैं, उतना ही नया कनेक्शन प्राप्त करने के लिए वेब सर्वर अधिक उपलब्ध होता है। ध्यान दें, हालांकि, इस मूल्य को बहुत कम सेट करना PHP सत्र चर के साथ कहर पैदा कर सकता है, हालांकि ब्राउज़र सत्र-आधारित कुकीज़ के साथ नहीं। इसलिए, उदाहरण के लिए, 300 का मान (5 मिनट) एक वेब सर्वर के लिए अच्छा हो सकता है जो ब्राउज़र सत्र कुकीज़ के बजाय वेब ऐप वर्कफ़्लो के लिए PHP सत्र चर पर निर्भर करता है। 45 का मान किसी ऐसे वेब सर्वर के लिए अच्छा हो सकता है जो स्थैतिक विज्ञापन लैंडिंग पृष्ठों से अधिक कुछ भी नहीं करता है, लेकिन एक सर्वर के लिए भयानक होगा जो PHP सत्र चर का उपयोग करने के लिए बहुत अधिक आवश्यक है। तो, इस फ़ाइल में टाइमआउट पैरामीटर को उस राशि में संपादित करें जिसकी आपको ज़रूरत है। यह देखने के लिए आपके सभी वेब पृष्ठों के साथ कुछ परीक्षण कर सकता है कि क्या मूल्य बहुत कम है। यह शायद एक अच्छा विचार है, हालांकि, इसे 300 से अधिक सेट न करने के लिए जब तक आप बड़े फ़ाइल अपलोड या बड़े फ़ाइल डाउनलोड में समस्याएं नहीं देख रहे हैं। लेकिन एक सर्वर के लिए भयानक होगा जो PHP सत्र चर का उपयोग करने के लिए एक बड़ा सौदा है। तो, इस फ़ाइल में टाइमआउट पैरामीटर को उस राशि में संपादित करें जिसकी आपको ज़रूरत है। यह देखने के लिए आपके सभी वेब पृष्ठों के साथ कुछ परीक्षण कर सकता है कि क्या मूल्य बहुत कम है। यह शायद एक अच्छा विचार है, हालांकि, इसे 300 से अधिक सेट न करने के लिए जब तक आप बड़े फ़ाइल अपलोड या बड़े फ़ाइल डाउनलोड में समस्याएं नहीं देख रहे हैं। लेकिन एक सर्वर के लिए भयानक होगा जो PHP सत्र चर का उपयोग करने के लिए एक बड़ा सौदा है। तो, इस फ़ाइल में टाइमआउट पैरामीटर को उस राशि में संपादित करें जिसकी आपको ज़रूरत है। यह देखने के लिए आपके सभी वेब पृष्ठों के साथ कुछ परीक्षण कर सकता है कि क्या मूल्य बहुत कम है। यह शायद एक अच्छा विचार है, हालांकि, इसे 300 से अधिक सेट न करने के लिए जब तक आप बड़े फ़ाइल अपलोड या बड़े फ़ाइल डाउनलोड में समस्याएं नहीं देख रहे हैं।
अब अपनी Apache वेब सेवा को पुनः आरंभ करें। यदि आपने कुछ गलत किया है, तो अपाचे आपको इसके बारे में बताएगा कि आप इसे फिर से शुरू करते हैं, और आप इसे सुधार सकते हैं।
sudo service apache2 पुनरारंभ
- अब पहले किए गए 10 टैब ब्राउज़र ट्रिक को दोहराएं और देखें कि क्या आप अपाचे वेब सर्वर त्रुटि लॉग में अपाचे कॉन्फ़िगरेशन त्रुटियों का सामना करते हैं:
सुडोल पूंछ -f /var/log/apache2/error.log
... उससे बाहर निकलने के लिए CTRL + C दबाएं, आपको चाहिए।
MaxRequestWorkers (और हाल ही में जब से आपने वेब सर्वर को फिर से शुरू किया है) की आवश्यकता के बारे में शिकायत के लिए देखें। यदि आप यह देखते हैं कि एक इष्टतम MaxRequestWorkers सेटिंग के साथ भी, तो आपको अपनी वेबसाइटों या वेब एप्लिकेशन के लिए अधिक गोलाबारी की आवश्यकता है। इन विकल्पों पर विचार करें:
- बड़े फ़ाइल डाउनलोड, चित्र और स्क्रिप्ट के लिए CDN का उपयोग करना।
- CloudFlare या अन्य जैसी कैशिंग सेवा का उपयोग करना।
- एक लोड बैलेंसर के पीछे एक "वेब ऐप" के रूप में कार्य करने वाले कई वेब सर्वर का उपयोग करने के लिए अपनी वेबसाइट या वेब एप्लिकेशन रणनीति को फिर से बनाना।
- सर्वर में अधिक रैम जोड़ना, और इस तरह यह गणना फिर से करना।
- अब जब अपाचे सर्वर को ट्यून किया गया है, यह बेसलाइन ट्यून की तरह है। आपको 2-3 सप्ताह के दौरान इस पर जांच करनी होगी और अपाचे त्रुटि लॉग में MaxRequestWorker मुद्दों की तलाश करनी होगी। उससे, आप अनुकूलन पर निर्णय ले सकते हैं (चरण 10 देखें)। आप मुबीन को उबंटू पर एप्ट के साथ भी स्थापित कर सकते हैं और समय के साथ अपाचे प्रदर्शन को देख सकते हैं और इससे पहले कि आप वेब सर्वर को संभाल रहे हैं यातायात की मात्रा के बारे में कुछ भी करने की आवश्यकता के बारे में निर्णय लेने से पहले वृद्धि का विचार करें।