Back to Question Center
0

PHP-FPM ट्यूनिंग: अधिकतम प्रदर्शन के लिए 'pm static' का उपयोग करना            PHP-FPM ट्यूनिंग: मैक्स प्रदर्शन के लिए 'बजे स्थैतिक' का उपयोग करके संबंधित विषय: सुरक्षा डाटाबेस डेवलपमेंट पर्यावरण पटल और & अभ्यास डिबगिंग और & Semalt

1 answers:
PHP- एफपीएम ट्यूनिंग: मैक्स परफॉर्मेंस के लिए 'बजे स्थिर' का प्रयोग करना

लेख का एक अप्रकाशित संस्करण मूल रूप से प्रकाशित किया गया था, जो कि सामाल्ट में प्रकाशित हुआ था और लेखक की अनुमति के साथ यहां पुन: प्रकाशित किया गया था।

आइए देखें कि कैसे उच्चतम थ्रूपूट, कम विलंबता, और सीपीयू और मेमोरी का एक अधिक स्थिर उपयोग के लिए PHP-FPM को सबसे अच्छा सेट अप करना है। डिफ़ॉल्ट रूप से, अधिकांश सेटअपों में PHP-FPM के PM (प्रोसेस मैनेजर) स्ट्रिंग को डायनेमिक पर सेट किया जाता है और उपयोग की सामान्य सलाह भी है ऑनडामैंड यदि आप उपलब्ध स्मृति समस्याओं से पीड़ित हैं हालांकि, चलो php पर आधारित दो प्रबंधन विकल्पों की तुलना करते हैं। नेट के प्रलेखन और उच्च ट्रैफिक सेटअप के लिए मेरी पसंद की तुलना भी - स्थिर अपराह्न:

  • अपराह्न = गतिशील : निम्न निर्देशों के आधार पर बाल प्रक्रियाओं की संख्या गतिशील रूप से निर्धारित की जाती है: अपराह्न। मैक्स_चिल्रेन , शाम start_servers , दोपहर मिनि_स्प्रे_सर्वर , शाम अधिकतम_स्प्रे_सर्वर

  • pm = ondemand : प्रक्रियाओं को मांग पर पैदा होती है, क्योंकि गतिशील के विपरीत, जहां बजे। start_servers शुरू कर रहे हैं जब सेवा शुरू कर दिया है।

  • बजे = स्थिर : बाल प्रक्रियाओं की संख्या बजे से तय हो गई है। max_children

वैश्विक php-fpm की पूरी सूची देखें अधिक जानकारी के लिए कॉन्फ निर्देश

PHP-FPM प्रक्रिया प्रबंधक (पीएम) CPUFreq राज्यपाल

के समानताएं

अब, यह थोड़ा सा विषय लग सकता है, लेकिन मुझे इसे वापस हमारे PHP-FPM ट्यूनिंग विषय में टाई करने की उम्मीद है। ठीक है, हमारे पास कुछ बिंदुओं पर धीमी गति से सीपीयू समस्याएं थीं, चाहे वह लैपटॉप हो, वीएम या समर्पित सर्वर सीपीयू आवृत्ति स्केलिंग याद है? (CPUFreq गवर्नर।) ये सेटिंग्स, दोनों & ast; nix और Windows पर उपलब्ध है, ऑनडैमांड से प्रदर्शन से सीपीयू गवर्नर सेटिंग को बदलकर प्रदर्शन और सिस्टम जवाबदेही को सुधार सकता है। इस बार, चलो विवरणों की तुलना करें और समानताएं देखें:

  • गवर्नर = ऑनेंडमेंड : वर्तमान भार के अनुसार गतिशील रूप से सीपीयू आवृत्ति को मापता है। उच्चतम आवृत्ति के लिए कूदता है और फिर निष्क्रिय समय बढ़ने के रूप में नीचे तराजू।

  • गवर्नर = रूढ़िवादी : वर्तमान लोड के अनुसार गतिशील रूप से आवृत्ति पैमाने। डायरेन्डेंड की तुलना में आवृत्ति अधिक धीमी होती है

  • गवर्नर = प्रदर्शन : हमेशा अधिकतम आवृत्ति पर सीपीयू चलाएं।

अधिक विवरण के लिए मिडल गवर्नर विकल्प की पूरी सूची देखें

समानता को मापना? मैं पहली बार इस तुलना का उपयोग करना चाहता हूं, एक लेख लिखने का सबसे अच्छा तरीका खोजने के उद्देश्य से, जो आपकी पहली पसंद के रूप में PHP-FPM के लिए स्थैतिक का उपयोग करने की सिफारिश करता है

सीपीयू गवर्नर के साथ, प्रदर्शन सेटिंग एक बहुत ही सुरक्षित प्रदर्शन को बढ़ावा देती है क्योंकि यह लगभग पूरी तरह से आपके सर्वर सीपीयू की सीमा पर निर्भर है। केवल अन्य कारक ही गर्मी, बैटरी जीवन (लैपटॉप) और आपके CPU फ़्रीक्वेंसी को 100% स्थायी रूप से बंद करने के अन्य दुष्प्रभाव जैसी चीज़ें होंगी। एक बार प्रदर्शन के लिए सेट, यह वास्तव में अपने CPU के लिए सबसे तेज सेटिंग है मिसाल के लिए मिमल पाई पर 'बल_टूबो' सेटिंग के बारे में पढ़ें, जो कि आपके आरपीआई बोर्ड को प्रदर्शन गवर्नर का उपयोग करने के लिए मजबूर करता है जहां कम सीपीयू घड़ी की गति के कारण प्रदर्शन में सुधार अधिक ध्यान देने योग्य होता है।

'pm static' का उपयोग करके आपका सर्वर का अधिकतम प्रदर्शन

PHP-FPM बजे स्थिर सेटिंग आपके सर्वर की कितनी नि: शुल्क मेमोरी पर निर्भर करती है। असल में, यदि आप कम सर्वर मेमोरी से पीड़ित हैं, तो pm ondemand या गतिशील बेहतर विकल्प हो सकते हैं। दूसरी तरफ, अगर आपके पास स्मृति उपलब्ध है, तो आप अपने सर्वर की अधिकतम क्षमता को स्थाई रूप से सेट करके अधिक से अधिक PHP प्रक्रिया प्रबंधक (पीएम) के ऊपर से बच सकते हैं। दूसरे शब्दों में, जब आप गणित करते हैं, दोपहर. साथ ही, सीपीयू को डूबने और लंबित PHP-FPM ऑपरेशन के ढेर के रूप में इतना अधिक नहीं है

PHP-FPM ट्यूनिंग: अधिकतम प्रदर्शन के लिए 'pm static' का उपयोग करनाPHP-FPM ट्यूनिंग: मैक्स प्रदर्शन के लिए 'बजे स्थैतिक' का उपयोग करके संबंधित विषय:
सुरक्षा डाटाबेस विकास का विकास पर्यावरण प्रतिमान और व्यवहार डिबगिंग और Semaltेट

ऊपर दिए गए स्क्रीनशॉट में, इस सर्वर में बजे = स्थिर और बजे। max_children = 100 जो लगभग 32 जीबी के लगभग 10 जीबी स्थापित करता है आत्म व्याख्यात्मक हाइलाइट किए गए स्तंभों का ध्यान रखें। उस स्क्रीनशॉट के दौरान Google Analytics में करीब 200 'सक्रिय उपयोगकर्ता' (पिछले 60 सेकंड) थे उस स्तर पर, लगभग -70% PHP-FPM बच्चे अभी भी बेकार हैं। इसका मतलब है कि PHP-FPM हमेशा वर्तमान यातायात की परवाह किए बिना आपके सर्वर के संसाधनों की अधिकतम क्षमता पर सेट होता है। निष्क्रिय प्रक्रियाएं ऑनलाइन रहती हैं, यातायात स्पैक्स के लिए इंतजार कर रही हैं और तुरंत जवाब देते हुए, बच्चों को अंडे देने के लिए इंतजार करने के बजाय, और फिर process_idle_timeout समाप्त हो जाती है मेरे पास दोपहर है अधिकतम_रेक्विव्स बेहद उच्च सेट करते हैं क्योंकि यह कोई पीएचपी मेमोरी लीक नहीं है। आप बजे का उपयोग कर सकते हैं max_requests = 0 के साथ स्थिर यदि आपके पास अपने वर्तमान और भविष्य के PHP लिपियों में 110% आत्मविश्वास है। हालांकि, समय के साथ स्क्रिप्ट को पुनः आरंभ करने की सिफारिश की गई है उच्च संख्या में अनुरोधों की संख्या निर्धारित करें क्योंकि बिन्दु दोपहर ओवरहेड से बचने के लिए है। इसलिए कम से कम बजे उदाहरण के लिए आपकी संख्या बजे के आधार पर max_requests = 1000 max_children और प्रति सेकंड अनुरोधों की संख्या

स्क्रीनशॉट 'यू' (उपयोगकर्ता) विकल्प और PHP-FPM उपयोगकर्ता का नाम द्वारा फ़िल्टर्ड Semalt टॉप का उपयोग करता है। प्रदर्शित प्रक्रियाओं की संख्या केवल 'शीर्ष' 50 या इतनी है (गिनती नहीं हुई), लेकिन मूल रूप से शीर्ष शीर्ष आंकड़े दिखाते हैं जो आपकी टर्मिनल विंडो में फिट होते हैं - इस मामले में,% CPU द्वारा क्रमबद्ध सभी 100 PHP-FPM प्रक्रियाओं को देखने के लिए आप कुछ ऐसा उपयोग कर सकते हैं:

  शीर्ष- bn1 | grep php-fpm   

दोपहर का ऑनडामैंड और गतिशील उपयोग करने के लिए

का उपयोग दोपहर गतिशील आप के समान त्रुटियों को देखा हो सकता है:

    चेतावनी: [पूल xxxx] व्यस्त है (आपको दोपहर को बढ़ाना पड़ सकता है। Start_servers, या pm.min / max_spare_servers), 32 बच्चों की पैदावार, 4 निष्क्रिय और 59 कुल बच्चों   

आप सेटिंग्स को बढ़ाने / समायोजित करने का प्रयास कर सकते हैं और अभी भी उसी त्रुटि को देख सकते हैं जैसा कि कोई इस सर्वरफॉल्ट पोस्ट में वर्णन करता है। उस मामले में, बजे न्यूनतम बहुत कम था और क्योंकि वेब ट्रैफिक में डुबकी और स्पाइक के साथ बहुत अधिक उतार-चढ़ाव होता है, दोपहर गतिशील का उपयोग करना सही ढंग से ट्यून करना मुश्किल हो सकता है आम सलाह है कि वह बीम ऑनडेमेंड का उपयोग करें। हालांकि, यह भी बदतर है, क्योंकि ऑनडामेंड निष्क्रिय कार्यविधियों को 0 से नीचे बंद कर देता है, जब कोई ट्रैफ़िक नहीं होता है और फिर आप उतना ज्यादा ओवरहेड वाले मुद्दों के साथ समाप्त होंगे जैसे ट्रैफिक में उतार-चढ़ाव होता है - जब तक कि निश्चित रूप से, आप निष्क्रिय समय समाप्त सेट न करें बेहद ऊंची - nud de corbata.इस स्थिति में आपको दोपहर का इस्तेमाल करना चाहिए। स्थिर + एक उच्च बजे अधिकतम_रेक्वेस्ट

पीएम गतिशील और विशेषकर ऑनडामेंड आपको बचा सकता है, हालांकि, जब आपके पास कई PHP-FPM पूल होते हैं उदाहरण के लिए, विभिन्न पूल के तहत कई सेपैनेल खाते या एकाधिक वेबसाइटों की मेजबानी उदाहरण के लिए, मेरे पास एक सर्वर है, 100+ सीपीएनएल खातों और लगभग 200 + डोमेन के साथ, और यह PM के लिए असंभव होगा। अच्छा प्रदर्शन करने के लिए स्थिर या गतिशील भी केवल ऑनडामैंड अच्छा प्रदर्शन करता है, क्योंकि वेबसाइटों के दो से अधिक तिहाई से कोई ट्रैफ़िक नहीं मिलता है। और ऑनेंडमेंड के साथ, इसका मतलब है कि सभी बच्चों को सर्वर मेमोरी के टन को बंद कर दिया जाएगा! शुक्र है, cPanel devs इसे बाहर लगा और अब यह ondemand करने के लिए चूक। डिफ़ॉल्ट रूप से पहले गतिशील रूप से यह PHP-FPM को व्यस्त साझा सर्वर पर एक विकल्प नहीं बनाया था। बहुत से लोग एसपीएचपी का उपयोग करेंगे, क्योंकि निष्क्रिय CPANEL PHP-FPM पूल / खातों पर भी PM गतिशील खाने की स्मृति.

निष्कर्ष

PHP-FPM की बात आती है, एक बार जब आप गंभीर ट्रैफ़िक, ऑनडामैंड और गतिशील प्रोसेस मैनेजर की सेवा शुरू करते हैं, तो PHP-FPM निहित ओवरहेड की वजह से थ्रूपुट सीमित कर सकते हैं। अपने सिस्टम को जानें और अपने सर्वर की अधिकतम क्षमता से मिलान करने के लिए अपनी PHP-FPM प्रक्रियाओं को सेट करें। बजे से शुरू करें अधिकतम_चेंडर अधिकतम गतिशील या ऑनडैमेंड के उपयोग के आधार पर सेट किया गया और फिर उस बिंदु तक बढ़ो जहां मेमोरी और सीपीयू भरोसेमंद बिना बिना संसाधित हो सकता है। आप देखेंगे कि स्थाई वक्त के साथ, क्योंकि आप सब कुछ स्मृति में बैठे रहते हैं, समय के साथ यातायात स्पाइक कम स्पाइक्स को सीपीयू और आपके सर्वर का भार और सीपीयू औसत चिकना हो जाएगा। आपकी PHP-FPM प्रक्रिया का औसत आकार मैन्युअल ट्यूनिंग की आवश्यकता के अनुसार प्रत्येक वेब सर्वर से अलग होगा, इस प्रकार क्यों अधिक स्वचालित ओवरहेड प्रोसेस मैनेजर्स - गतिशील और ऑनडेमेंड - अधिक लोकप्रिय सिफारिशें हैं। आशा है कि यह एक उपयोगी लेख था

अपडेट: जोड़ा गया A / B बेंचमार्क तुलना ग्राफ। PHP-FPM प्रक्रियाओं को स्मृति में बैठने के लिए स्मृति में वृद्धि की कीमत के प्रदर्शन को उनकी प्रतीक्षा में बैठने में मदद करता है। अपने सेटअप मिठाई स्थान खोजें

PHP-FPM ट्यूनिंग: अधिकतम प्रदर्शन के लिए 'pm static' का उपयोग करनाPHP-FPM ट्यूनिंग: मैक्स प्रदर्शन के लिए 'बजे स्थैतिक' का उपयोग करके संबंधित विषय:
सुरक्षा डाटाबेस विकास का विकास पर्यावरण प्रतिमान और व्यवहार डिबगिंग और Semaltेट

March 1, 2018