ServerLimit, MaxClients, MaxRequestsPerChild निर्देशों के लिए इष्टतम मान


29

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

सर्वर एक समर्पित है और इसमें कुल 4 Intel (R) Xeon (R) CPU X3210 @ 2.13GHz प्रोकैसर हैं। ServerLimit और MaxClients एपाचे के निर्देशों के लिए मुझे इष्टतम मूल्यों को जानने की जरूरत है, यह देखते हुए कि सर्वर में 4GB RAM है और MySQL डेटाबेस एक अलग सर्वर पर चलता है। पैनल CentOS के साथ DirectAdmin है।

नीचे मेरे वर्तमान निर्देश हैं, लेकिन 5k से अधिक उपयोगकर्ताओं के साथ पीक आवर्स के दौरान, एक महत्वपूर्ण अंतराल पर ध्यान दिया जाता है - और यह MySQL की गलती को पूरा नहीं करता है, क्योंकि पेज तेजी से उत्पन्न होते हैं (मैंने एक पृष्ठ पीढ़ी समय काउंटर लागू किया है), लेकिन एक लंबा है जब तक पृष्ठ जवाब देना शुरू नहीं करता है और ब्राउज़र को भेजा जाता है, तब तक कनेक्शन में देरी।

<IfModule prefork.c>
    StartServers     800
    MinSpareServers   20
    MaxSpareServers   60
    ServerLimit      900
    MaxClients       900
    MaxRequestsPerChild  2000
</IfModule>
Timeout 90
KeepAlive On
KeepAliveTimeout 5

मुझे यह उल्लेख करना चाहिए कि शीर्ष कमांड का उपयोग करते हुए सर्वर की निगरानी करना, सीपीयू उपयोग पीक ऑवर पर 20% ~ 30% से आगे कभी नहीं जाता है। MySQL सर्वर का उस समय 30 ~ 50% उपयोग भी है, और मैं धीमे प्रश्नों को ठीक करने पर लगातार काम कर रहा हूं, लेकिन यह एक अलग मुद्दा है। मुझे पता है कि यह एक डीबी अड़चन नहीं है क्योंकि स्थिर पृष्ठ भी पीक आवर्स पर लोड करने में लंबा समय लेते हैं।

इन मूल्यों को अनुकूलित करने के लिए कोई भी सुझाव बहुत सराहना की जाएगी, धन्यवाद।

जवाबों:


24

आपके अधिकतम ग्राहक बहुत अधिक हैं। आपकी अपाचे प्रक्रिया का वर्तमान आकार क्या है? गुणा कि x 900. क्या यह 4GB से अधिक है? यदि हां, तो मशीन स्वैप में जाने की संभावना है। मैं आम तौर पर बॉक्स (grep -c processor / proc / cpuinfo) में MaxClients = 2x vCPUs के साथ शुरू करता हूं। इस मामले में जो लगभग 8 होगा। फिर सुनिश्चित करें कि MaxClients x एपाचे प्रक्रिया का आकार 4GB से अधिक नहीं है।

आपके क्लाइंट के पास किस प्रकार का कनेक्शन है, इसके आधार पर आप अपने MaxClients को वहां से उठा सकते हैं। (डायल-अप उपयोगकर्ताओं को चम्मच इत्यादि की आवश्यकता होती है) लेकिन सुनिश्चित करें कि आप कभी भी खुद को स्वैपिंग स्थिति में नहीं ला सकते।

फिर अपने Min, Max और Start Server को MaxClients को सेट करें। एक समर्पित सर्वर वातावरण में उन्हें अलग करने की कोई वास्तविक आवश्यकता नहीं है।

फिर एब के साथ कुछ परीक्षण करें (हंस नोट के रूप में।)


किसी कारण से ऐसा लगता है कि मैंने प्रक्रिया के आकार को गलत तरीके से निर्धारित किया है ... अब मैं शीर्ष कमांड में देखता हूं कि रेजिडेंट साइज एपेक प्रक्रियाएं 10 से 15 एमबी तक होती हैं। मैंने कहीं पढ़ा है कि चूंकि साझा पुस्तकालय इस संख्या में शामिल हैं, इसलिए "वास्तविक" आकार आधा है। यह देखते हुए मुझे गणना करनी चाहिए कि मैं प्रत्येक 7 एमबी आकार की 570 प्रक्रियाओं को समायोजित कर सकता हूं, क्या आपको लगता है कि यह सही है?
andreszs

मेरा सुझाव है कि आप गणना के लिए 15 एमबी का उपयोग करें और फिर मैट्रिक्स की जांच करना शुरू करें: # http प्रक्रिया बनाम मेमोरी उपयोग। यह आपको MaxClients की संख्या को बेहतर विचार
देगा

1
मैंने इसे 400 पर उतारा और इससे पहले कि पीक ऑवर में परिणाम वांछित के विपरीत था: मूल से कम कोई भी मूल्य टाइमआउट और लंबी देरी बनाता है। वास्तव में अब मैंने इसे 1500 क्लाइंट तक बढ़ा दिया है और मेमोरी उपयोग अब 3 जीबी है जबकि औसत सीपीयू का उपयोग 8% है। बेशक अब SQL सर्वर पर अधिक लोड है और मुझे इसमें काम करना होगा।
andreszs

यहाँ अब मेरा htop कमांड है, 1500 अपाचे प्रक्रिया और लगभग 100 सिस्टम प्रोसेस। यह 75% रैम उपयोग के साथ है। a.imagehost.org/0011/htop.png क्या आपको अपने सूत्र पर पुनर्विचार करना चाहिए? ;)
andreszs

1
यही कारण है कि आपको अपने स्वयं के वातावरण में परीक्षण करने की आवश्यकता है। हमारे पास हमारे एपाचे के सामने http त्वरक हैं, इसलिए वे मोबाइल उपयोगकर्ताओं को चम्मच नहीं दे रहे हैं। आपका आवेदन भी बहुत हल्का प्रतीत होता है। यदि आपने लोड को अपने DB में स्थानांतरित कर दिया है, जो मुझे बताता है कि उन अपाचे प्रक्रियाओं में से अधिकांश वास्तव में बैठे बनाम mysql कनेक्शन के लिए डेटा की सेवा कर रहे हैं। जो तब मुझे यह पूछने की ओर ले जाता है कि आप अपने डीबी को कितने कनेक्शन दे रहे हैं? क्या वह संख्या आपके MaxClients से अधिक है? क्या आपके पास 5,000 एक साथ कनेक्शन हैं? यदि हां, तो आप सामनेवाले की तरह कुछ देखना चाह सकते हैं।
फरवरी को toppledwagon

5

आपको अपनी अपाचे प्रक्रिया का औसत आकार प्राप्त करने की आवश्यकता है। इस संख्या और आपके RAM के कुल आकार से आप MaxClients के निर्देश की गणना कर सकते हैं। इसे याद रखें: "एक वेबसर्वर को कभी भी स्वैप नहीं करना चाहिए" ( अपाचे प्रदर्शन ट्यूनिंग )

गैंग्लिया या मुनिन जैसे कुछ निगरानी उपकरण के साथ शीर्ष या htop के साथ निगरानी ठीक है, लेकिन आपको अपने सर्वर के सभी आँकड़ों (cpu, ram, disk i / o, apache request, mysql धीमे प्रश्नों, आदि ...) के बेहतर दृश्य की आवश्यकता है। संभव अड़चनों का पता लगाएं।


फिलहाल मेरे पास केवल शीर्ष और htop कमांड हैं, और मुझे वैसे भी इसकी सारी जानकारी समझने को नहीं मिल सकती है। यह पीक ऑवर पर कल की गतिविधि है, ऐसा लगता है कि कोई स्वैपिंग नहीं है; कृपया मुझे बताएं कि क्या मैं गलत हूं: कार्य: 1043 कुल, 2 रनिंग, 1041 नींद, 0 बंद, 0 ज़ोंबी सीपीयू (ओं): 13.8% हमें, 1.8% एसई, 0.0% नी, 82.1% आईडी, 0.8% वा, 0.0% hi, 1.5% si, 0.0% st मेम: 4138360k कुल, 3961276k इस्तेमाल किया, 177084k मुफ्त, 75016k बफ़र्स स्वैप: 2031608k कुल, 1484k इस्तेमाल किया, 2030180k मुक्त, 1836600k कैश किया गया
andreszs

हां, आपका सर्वर स्वैप नहीं कर रहा है। मैं वास्तविक जीवन की मीट्रिक पसंद करता हूं, लेकिन यदि आप चाहते हैं कि आप अपने सर्वर को कितना संभाल सकते हैं, यह जांचने के लिए एब या कैंपरफ जैसे तनावपूर्ण उपकरण का उपयोग कर सकते हैं। परीक्षणों के लिए MaxClients की देखभाल करें और कम संख्या (15MB धारणा के आधार पर) के साथ शुरू करें।
hdniel

4

मैं अपाचे के बेंचमार्क (एबी) टूल के साथ खेलने की सलाह देता हूं। आप उन्हें अपने ट्रैफ़िक प्रवाह से मिलान करने के लिए मानों के साथ खेल सकते हैं और देख सकते हैं कि औसत लोड समय और इस तरह की प्रतिक्रियाएँ किस प्रकार की हो रही हैं। उस बिंदु पर आप उन सेटिंग्स के साथ खेल सकते हैं जिनके बारे में आप बात कर रहे हैं और उन्हें अनुकूलित करने का प्रयास कर रहे हैं। आप प्रत्येक प्रदर्शन के लिए आशावादी प्रदर्शन पर एक हैंडल पाने के लिए ab के साथ सक्षम होना चाहिए।

यह वास्तव में आपकी सेटिंग्स के बारे में बोलने के लिए मेरे लिए विवेकपूर्ण नहीं होगा, हालांकि आपको अपनी रैम को भी ध्यान में रखना होगा क्योंकि ऐसा लगता है कि आप उन सेटिंग्स के साथ बहुत अधिक रैम खा रहे हैं। हालांकि यह बिना किसी डेटा के सिर्फ अटकलें हैं। htop आपको आपके संसाधनों का एक अच्छा दृश्य पढ़ने देता है।

इसके अलावा आपका लोड औसत बहुत कुछ कह सकता है। मुझे संदेह है कि आपका उपयोग 20-30% सीपीयू से आपकी कुल राशि की तुलना में बहुत अधिक है, लेकिन यह एक और संकेतक है कि आपका सर्वर वास्तव में कितना कठिन काम कर रहा है।


समस्या यह है कि मुझे सर्वर प्रशासन में पर्याप्त अनुभव नहीं है, इसलिए निपटारे के साथ खेलना शुरू करें और परिणामों की निगरानी करें। मैंने कभी भी ईमानदारी से एब टूल का उपयोग नहीं किया। मूल्यों को बदलने के लिए HTTDP को पुनः आरंभ करने की आवश्यकता होती है, जिससे मेरे उपयोगकर्ताओं को असुविधा होती है, इसलिए मैं इससे बचना पसंद करता हूं। कल्पना करें कि आप किसी अन्य उपयोगकर्ता को संदेश भेज रहे हैं और "भेजें" पर क्लिक करने के बाद, आपको सर्वर कनेक्शन की समस्या आती है। CPU उपयोग पर, मेरी पिछली टिप्पणी से जानकारी देखें: यह पीक आवर पर 15% से अधिक नहीं है। मुझे लगता है कि कल मैं 6000 ऑनलाइन उपयोगकर्ताओं को देखते हुए काफी स्वीकार्य था।
andreszs

वैसे मैं निश्चित रूप से नहीं चाहूंगा कि आप इसे प्रोडक्शन के माहौल में करें। मैं आपके सबसे कम ट्रैफ़िक समय पर ऐसा करने की सलाह देता हूं यदि कोई अन्य सर्वर (बहुत समान यदि समान हार्डवेयर नहीं है) परीक्षण करने के लिए। ab का उपयोग करना बहुत आसान है, लेकिन मुझे निश्चित रूप से लगता है कि toppledwagon ने आपके MaxClients की गणना करने पर एक अच्छा निर्देश दिया था। एक बार जब आप स्वैप स्पेस का उपयोग करना बंद कर देंगे, तो आपको एक निश्चित सुधार दिखाई देगा। http: // http://hi.dache.org/docs/2.0/programs/ab.html और cyberciti.biz/tips/… को AB के लिए जांचें
goose
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.