Fastcgi और fpm में क्या अंतर है?


117

मैं macports पर fpm के साथ php स्थापित करने की कोशिश कर रहा हूँ। मैंने कहीं पढ़ा कि fpm का मतलब है FastCGI प्रोसेस मैनेजर। इसका मतलब है कि fastcgi और fpm समान हैं? यदि वे समान हैं, तो हमारे पास php के लिए दो अलग-अलग macports वेरिएंट क्यों हैं "php5 + fastcgi" और "php5 + fpm"

जवाबों:


94

FPM PHP में FastCGI SAPI (सर्वर API) का प्रबंधन करने के लिए एक प्रक्रिया प्रबंधक है।

मूल रूप से, यह स्पॉनएफसीजीआई जैसी चीज की आवश्यकता को प्रतिस्थापित करता है । यह FastCGI बच्चों को अनुकूल रूप से जन्म देता है (यदि वर्तमान लोड की आवश्यकता होती है तो इसका अधिक अर्थ है)।

अन्यथा, इसके और FastCGI के बीच बहुत अधिक ऑपरेटिंग अंतर नहीं है (अनुरोध शुरू होने से अंत तक अनुरोध पाइपलाइन समान है)। इसे लागू करना आसान बनाने के लिए ही है।


8
Php-fpm का एक प्रमुख लाभ यह है कि एक APC कैश को कई प्रक्रियाओं में साझा किया जा सकता है। एफसीजीआईडी ​​के साथ, एपीसी कैश प्रति-प्रक्रिया है। एफपीएम का उपयोग करने से बड़ी मेमोरी बचत हो सकती है, जो आपको अधिक प्रोसेस को स्पॉन करने के लिए उस सहेजे गए मेमोरी का उपयोग करने की अनुमति देती है, और अधिक ट्रैफ़िक प्रदान करती है।
कैम 18००१

25
@ कैम 8001: यह पूरी तरह सच नहीं है। आप यह निर्धारित कर सकते हैं SpawnFCGIकि कितने प्रक्रियाएँ स्पॉन्ज करें, और प्रति प्रक्रिया PHP बच्चों की संख्या। तो 100 बच्चों के साथ 1 PHP प्रक्रिया को जन्म देना, 100 बच्चों के साथ FPM का उपयोग करने के समान है ... हालांकि, रिवर्स सच है। अगर FPM मार जाता है (segfault, जो भी हो), आपका पूरा कार्यकर्ता मर जाता है। स्पॉनएफसीजीआई में, यदि कोई प्रक्रिया मर जाती है, तो बाकी जीवित रह सकते हैं ... इसलिए यह एक स्पष्ट एक-से-बेहतर-अन्य नहीं है। अलग अलग दृष्टिकोण। एफपीएम की सिफारिश तकनीकी कारणों से नहीं की जाती है, लेकिन क्योंकि यह साइड कोर (वास्तव में) के साथ बनाए रखा जाता है ...
ircmaxell

56

एंथनी जो कहते हैं वह बिल्कुल सही है, लेकिन मैं यह जोड़ना चाहता हूं कि आपके अनुभव से संभवतः बेहतर प्रदर्शन और दक्षता दिखाई देगी (क्योंकि fpm-vs- fcgiलेकिन आपके कार्यान्वयन के लिए अधिक नहीं httpd)।

उदाहरण के लिए, मैं एक क्वाड-कोर मशीन चल रहा था lighttpd+ fcgiअच्छी तरह से साथ गुनगुना। मैंने विकास के साथ सामना करने के लिए एक 16-कोर मशीन को अपग्रेड किया, और दो चीजों में विस्फोट हुआ: रैम का उपयोग, और सीगफॉल्ट। मैंने खुद lighttpdको वेबसाइट को बनाए रखने के लिए हर 30 मिनट में पुनः आरंभ किया।

मैंने php-fpm और nginx पर स्विच किया, और RAM का उपयोग> 20GB से 2GB तक गिर गया। Segfaults गायब हो गया। कुछ शोध करने के बाद, मुझे पता चला कि लाइटटैप और एफसीजी लोड के तहत मल्टी-कोर मशीनों पर अच्छी तरह से नहीं मिलते हैं, और कुछ मामलों में मेमोरी लीक के मुद्दे भी हैं।

क्या यह php-fpmबेहतर होने के कारण है fcgi? पूरी तरह से नहीं, लेकिन आप जिस तरह से हुक करते php-fpmहैं वह पूरी तरह से हेकुवा से अधिक कुशल लगता है कि आप कैसे सेवा करते हैं fcgi


8
क्या इस तरह के मुद्दे लगभग (अप्रैल 2017) हैं?
भगवान लोह।

1
आपके द्वारा उपयोग किए गए लाइटटैप और fpm के संस्करण के बारे में कोई भी अपडेट की सिफारिश की गई है, उल्लिखित मुद्दों का कोई भी अपडेट अभी भी दिखाई दे रहा है (जून 2018) समुदाय के लिए भी उपयोगी है।
इमा

0

CGI के रूप में PHP चलाने का अर्थ है कि आप मूल रूप से अपने वेब सर्वर को PHP निष्पादन योग्य फ़ाइल का स्थान बताते हैं, और सर्वर उस निष्पादन योग्य को चलाता है

जहाँ तक

PHP FastCGI प्रोसेस मैनेजर (PHP-FPM) PHP के लिए एक वैकल्पिक FastCGI डेमॉन है जो एक वेबसाइट को ज़ोरदार भार को संभालने की अनुमति देता है। PHP-FPM ने इसे पूरा करने के लिए पूल (कार्यकर्ता जो PHP अनुरोधों का जवाब दे सकते हैं) को बनाए रखा है। PHP-FPM बहु-उपयोगकर्ता PHP वातावरणों के लिए पारंपरिक CGI- आधारित विधियों, जैसे SUPHP से अधिक तेज़ है

हालांकि, दोनों के लिए पेशेवरों और विपक्ष हैं और एक को उनके विशिष्ट उपयोग के मामले के अनुसार चुनना चाहिए।

मुझे Fastcgi बनाम fpm के लिए इस लिंक पर जानकारी मिली जो मेरे परिदृश्य में किस हैंडलर को चुनने में काफी मददगार है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.