2012-10-27 6 views
8

मैं रेल के डिफ़ॉल्ट वेबब्रिक सर्वर के लिए अन्य विकल्पों का मूल्यांकन और मूल्यांकन कर रहा हूं और थिन सबसे दर्द रहित और साफ चीज थी जो बहुत अच्छी तरह से काम करती थी !!इनमें से कौन सा "नवीनतम रेल" एप्लिकेशन के साथ उपयोग करने का एक बेहतर विकल्प है? Mongrel, पतला, WEBrick और यात्री

इनमें से कौन सा मोंगल, थिन, वेबब्रिक और यात्री आप की सिफारिश करेंगे और क्यों ..? क्या कोई स्केलेबिलिटी परक्स (क्लस्टर फ्रेंडली या कॉन्फ़िगरेशन जो कुछ प्रकार के पैमाने को संभाल सकता है) जो इनमें से किसी भी सर्वर के साथ आते हैं .. या मूल्यांकन करने के दौरान स्केलेबिलिटी भी पैरामीटर होनी चाहिए?

उत्तर

9

दीपक पहले से ही अपने प्रश्न के आधे दिए लेकिन मेरे बातों पर स्पष्ट एक छोटा सा करते है। (मैं फ़्यूज़न पैसेंजर लेखकों में से एक हूं।)

  • वेबब्रिक एक खिलौना वेब सर्वर है। विकास के अलावा किसी भी चीज़ में इसका कोई भी उपयोग नहीं करता है क्योंकि यह खराब प्रदर्शन करता है और स्मृति को रिसाव करने के लिए कहा जाता है।
  • आपने कहा था कि पतला अच्छा काम करता है। क्या आपने इसे पहले से ही एक रिवर्स प्रॉक्सी कॉन्फ़िगरेशन में सेट किया है? क्योंकि लोग उत्पादन परिदृश्य में यही करते हैं। थिन (या Mongrel, या यूनिकॉर्न) सीधे इंटरनेट पर बेनकाब करना सुरक्षित नहीं है।
  • अधिक जानकारी के लिए आपको Ruby on Rails server options और the Phusion Passenger architectural overview पढ़ने में रुचि हो सकती है।

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

कुछ बारीकियों हालांकि के बारे में पता होना करने के लिए कर रहे हैं।

  • फ़्यूज़न पैसेंजर वैश्विक कतार नामक एक सुविधा प्रदान करता है। यह एक विशिष्ट समस्या हल करता है, explained in detail in the manual। डिफ़ॉल्ट रूप से Nginx और Apache प्रॉक्सी एक राउंड-रॉबिन तरीके से अनुरोध करते हैं ताकि वे इस समस्या से पीड़ित हों, जबकि फ़्यूज़न पैसेंजर नहीं करता है। फ़्यूज़न पैसेंजर का उपयोग न करने के कई तरीके हैं लेकिन उन्हें विशिष्ट कॉन्फ़िगरेशन या अतिरिक्त वेब सर्वर मॉड्यूल की स्थापना की आवश्यकता होती है।
  • आई/ओ मॉडल या आपके आवेदन की प्रकृति पर निर्भर महत्वपूर्ण नहीं हो सकता है हो सकता है। Mongrel, पतला, यूनिकॉर्न, वे सभी बहु प्रक्रिया एकल-थ्रेडेड हैं। यह पारंपरिक वेब ऐप्स के लिए बहुत अच्छा काम करता है जो स्थानीय डेटाबेस में सामान दिखता है और कुछ प्रस्तुत करता है, लेकिन उन ऐप्स के लिए मुख्य रूप से बेकार है जो बहुत से HTTP API कॉल करते हैं या अन्यथा I/O पर बहुत कुछ इंतजार करना पड़ता है। Why Rails 4 Live Streaming is a Big Deal इसे विस्तार से बताता है।

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

  • बड़े उत्पादन वातावरण, कुछ सुविधाएं बन महत्वपूर्ण है, उदा रोलिंग रीस्टार्ट, तैनाती विफल होने पर कुछ भी गलत नहीं दिख रहा है, आदि। मोंगेल, थिन, यूनिकॉर्न, फ़्यूज़न पैसेंजर, वे सभी इन सुविधाओं को कुछ हद तक बेनकाब करते हैं, लेकिन कुछ को दूसरों की तुलना में अधिक व्यवस्थापक प्रयास की आवश्यकता होती है। उदाहरण के लिए मंगल और थिन में रोलिंग पुनरारंभ करने के लिए, आपको अपनी तैनाती स्क्रिप्ट में बहुत सारे कदमों की आवश्यकता है। यूनिकॉर्न को कई चरणों की आवश्यकता नहीं है, लेकिन अभी भी महत्वपूर्ण है। यह वह जगह है जहां फ़्यूज़न पैसेंजर एंटरप्राइज़ चमकता है: यह इन सभी सुविधाओं को लेता है और उन्हें एक कॉन्फ़िगरेशन विकल्प में बदल देता है। विकल्प चालू करें और सॉफ़्टवेयर बाकी का ख्याल रखता है।

तो, अपने परिदृश्य के लिए जो भी विकल्प आपको लगता है उसे चुनें। उत्तर के लिए

+0

काफी कुछ समय के लिए दूर था .. महान उत्तर के लिए धन्यवाद .. मैं अब .. + के रूप में nginx यात्री का उपयोग कर शुरू कर दिया है आवश्यकताएं असाधारण नहीं हैं और इसलिए स्केलेबिलिटी ऐसी कोई समस्या नहीं रही है !! फिर से धन्यवाद !! – brucewayne

+0

@ हांगली मेरे पास एक रेल एप्लिकेशन है जो फेय रूबी मणि का व्यापक उपयोग करता है, जो बदले में वेबसाइकिल और धूमकेतु (लंबे HTTP मतदान) का व्यापक उपयोग करता है। दूसरे शब्दों में, मेरे पास सैकड़ों टीसीपी कनेक्शन हैं जो लंबे समय तक खुला रहता है। साइट के विभिन्न हिस्सों रीयल-टाइम डेटा का उपयोग करते हैं। प्रारंभ में मैं अपाचे 2 का उपयोग कर रहा था लेकिन इसके एसिंक्रोनस i/o बहु थ्रेडेड ताकत के कारण nginx में माइग्रेट करने का निर्णय ले रहा हूं। एक आवेदन सर्वर के रूप में यात्री Thin से ज्यादा अच्छा खेलेंगे? – Donato

+0

@ डोनाटो यदि आप वेबस्केट्स का उपयोग कर रहे हैं तो एनजिनक्स के साथ पैसेंजर एंटरप्राइज (मल्टीथ्रेडिंग के लिए) बहुत अच्छा काम करेगा, जैसे थिन। थिन पर पैसेंजर एंटरप्राइज़ का मुख्य लाभ बेहतर टूलींग और बेहतर दस्तावेज़ीकरण में है। साथ ही, कृपया [वेबसाकेट ट्यूनिंग निर्देश] चेकआउट करें (https://www.phusionpassenger.com/library/config/nginx/tuning_sse_and_websockets.html)। – Hongli

1

उत्पादन के लिए सेट करने के लिए सबसे आसान शायद अपाचे और mod_rails (यात्री) होगा। यदि आप नई गर्मी का उपयोग करना चाहते हैं, तो आप nginx और यात्री को एक भंवर दे सकते हैं।

विकास के लिए आम तौर पर काम करने के लिए सबसे आसान है। अधिकांश विंडोज आईडीई (रेड रेल, नेटबीन्स) आपको विकास कार्य के लिए वेब्रिक या मोंगेल का उपयोग करने का विकल्प देते हैं और आपको आईडीई से सर्वरों को नियंत्रित करने देते हैं।

अद्यतन

चार विकल्प

वहाँ वास्तव में कर रहे हैं चार विकल्प, ठीक है, के साथ साथ WEBrick, लेकिन यह एक उत्पादन सर्वर के लिए एक असामान्य विकल्प होगा। लगभग बढ़ती जटिलता के क्रम में ...

nginx + संकर जाति nginx + पैसेंजर अपाचे + संकर जाति अपाचे + पैसेंजर (वहाँ Phusion यात्री स्टैंडअलोन है, लेकिन यह वास्तव में एक nginx + यात्री एक साथ संकलित है, तो मैं कर रहा हूँ यह गिनती नहीं है, हालांकि यह कुछ लोगों के लिए एक अच्छा विकल्प हो सकता है।)

एक बड़ी साइट सर्वर के सामने विशेष परत 7 हार्डवेयर (नेटस्केकर, एफ 5, ...) जोड़ सकती है।

+0

धन्यवाद .. इस गैर विकास प्रयोजनों के लिए और अधिक है .. मुझे लगता है कि मैं nginx एक दूसरा सवाल पर एक किसी भी अंतर्दृष्टि की कोशिश .. दे देंगे ..? – brucewayne

+0

जटिलता के क्रम में मैं आपके सॉर्टिंग से असहमत हूं। फ़्यूज़न पैसेंजर + अपाचे और फ़्यूज़न पैसेंजर + एनजिनक्स एक ही जटिलता, उपयोगिता-वार के बारे में हैं। लेकिन दोनों Apache/Nginx + Mongrel की तुलना में कम जटिल उपयोगिता-वार हैं। फ़्यूज़न पैसेंजर स्टैंडअलोन उन सभी में से सबसे आसान होना चाहिए क्योंकि यह केवल एक ही कमांड है, Nginx को संकलित करने की कोई आवश्यकता नहीं है, और परिणाम तुरंत इंटरनेट के सामने आ सकता है। इसके अलावा, Phusion यात्री + Nginx "नवीनतम को" नहीं है - यह चारों ओर से किया गया है के बाद से 2009 – Hongli

0

पतला विकास और उत्पादन के लिए मणि के रूप में 'पतली' के रूप में आसान

संबंधित मुद्दे