उत्पादन सर्वर बनाम पतला या गेंडा के रूप में वेब्रिक?


117

ऐसा लगता है कि यह मान लिया गया है कि आपको वेब्रिक को उत्पादन सर्वर के रूप में उपयोग नहीं करना चाहिए, लेकिन मैं वास्तव में कहीं भी उल्लेख नहीं कर सकता कि क्यों। सर्वसम्मति से प्रतीत होता है: "वेब्रिक विकास के लिए ठीक है, लेकिन थिन या यूनिकॉर्न उत्पादन, अवधि के लिए विकल्प है।"

मैंने थिन सर्वर के होमपेज को देखा और यह अनुरोधों / सेकंड के बारे में बात करता है लेकिन मैं वास्तव में ग्राफ को नहीं समझता हूं क्योंकि कोई एनोटेशन नहीं है।

क्या कोई मुझे बता सकता है कि मुझे वेब्रिक की तुलना में थिन या यूनिकॉर्न का उपयोग क्यों करना चाहिए? क्या विकास के लिए वेब्रिक का उपयोग करने का कोई लाभ है? मैं वेबब्रिक का उपयोग कर रहा हूं क्योंकि यह रेल के साथ आता है, और मुझे लगता है कि डिफ़ॉल्ट होने का एक कारण होना चाहिए।

मैं वैसे भी हेरोकू का उपयोग कर रहा हूं।


मोंगरेल जैसे अन्य लोगों की तुलना में इसकी गति धीमी है।
ayूय

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

24
यह अच्छा प्रश्न है।
justingordon

29
इस तरह के प्रश्न बंद नहीं होने चाहिए। वे उपयोगी और सहायक हैं। सभी स्व-नियुक्त सामग्री पुलिस को वापस चाहिए।
केन स्मिथ

22
मुझे यह पता चला "उत्पादन में WEBrick का उपयोग क्यों नहीं किया गया?" क्योंकि यह एक ऐसा सवाल है जिसका मैं जवाब चाहता हूं। मुझे उत्पादन में WEBrick का उपयोग करने का मतलब नहीं है, लेकिन मुझे यह कष्टप्रद लगता है कि हर कोई कहता है, "क्योंकि यह प्रोडक्शन® के लिए नहीं है, जाहिर है।" यह वास्तव में स्पष्ट नहीं है - यदि यह होता, तो लोग StackOverflow पर सवाल पूछने से पहले शोध नहीं करते, जैसा कि @Vlad ने किया था। स्वीकृत उत्तर सहायक है; कम से कम कुछ गायब सुविधाओं को इंगित करता है। तात्कालिक रूप से, जोर देकर कहते हैं कि एक प्रश्न को बंद कर दिया जाए क्योंकि आपको लगता है कि यह बिना किसी जवाब के अपना खुद का जवाब देने में मददगार नहीं है।
जस्टिन फोर्स

जवाबों:


42

कुछ महत्वपूर्ण कारण

  1. यह रूबी में लिखा है (देखें http://github.com/ruby/ruby/tree/trunk/lib/brbr )
  2. संपादित यह कई विशेषताएं नहीं है कि एक उत्पादन वेबसाइट आमतौर पर जरूरत है, जैसे कई श्रमिकों (विशेष रूप से, पूर्व forking, जीवन चक्र प्रबंधन, अतुल्यकालिक हैंडलिंग, आदि), पुनर्निर्देशन, पुनर्लेखन, आदि

जब मैं पुनर्निर्देश / पुनर्लेखनों का उल्लेख करता हूं, तो मैं इस तथ्य का उल्लेख कर रहा हूं कि वेब्रिक का उपयोग करते हुए, आपको एक अलग परत (रैक, सिनात्रा, रेल, कस्टम वेब्रिक कोड, आदि) पर पुनर्लेखन को संभालना होगा। इसके लिए आपको अपने दोबारा लिखे गए कोड को करने के लिए अतिरिक्त रूबी "हैंडलर" को स्पिन करना होगा। एक कम ट्रैफ़िक साइट के लिए, यह ठीक हो सकता है क्योंकि आपके पास पहले से गर्म प्रक्रियाएं हो सकती हैं। हालाँकि, एक उच्च ट्रैफ़िक साइट के लिए, यह सर्वर पर कुछ अतिरिक्त भार होता है जो कि फ्रंट एंड सर्वर (Apache, Nginx, आदि) Ruby * को स्पिन किए बिना संभाल सकता है, और संभवत: तेज़ी से परिमाण का आदेश देता है।

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


क्या हेरोकू पर कई श्रमिकों को संभालने के लिए विलंबित_जॉब का उपयोग करना संभव नहीं है, भले ही आप किस सर्वर का उपयोग करें?
व्लाद

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

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

1
@JimDeville - यूनिकॉर्न भी रूबी में लिखा है
Yarin

1
github.com/defunkt/unicorn/tree/master/ext/unicorn_http यूनिकॉर्न का एक बड़ा हिस्सा C
जिम डेविल

4

WEBrick भी अब URI को नहीं संभाल सकता है, यदि वे 2083 चार्ट से अधिक हैं तो आप एक दुर्घटना देखेंगे। पतली में ये समस्याएं नहीं हैं, जिसने इसे बेहतर बना दिया - पहले से ही विकास में।


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

3

मुझे वास्तव में सरल चीजें और समय से पहले अनुकूलन को पसंद नहीं है। WEBrick का उपयोग उत्पादन में किया जा सकता है बशर्ते कि यह एक कम यातायात वाली वेबसाइट हो। अधिकांश आवेदन हैं।

यदि आपकी साइट कुछ ऐसा करती है, जिसमें ई-मेल भेजता है या पीडीएफ फाइलें उत्पन्न करता है, तो आपको WEBrick को बहु-थ्रेडेड बनाना चाहिए । आप एक बार में कई अनुरोधों को संभालना चाहते हैं।


1

अतीत में इसके कुछ सुरक्षा मुद्दे रहे हैं, लेकिन ऐसा लगता है कि इसका बड़ा कारण यह है कि यह उन सर्वरों की तुलना में बहुत धीमा है जो उत्पादन के लिए लक्षित हैं।


4
क्या आपने स्टेट की तुलना देखी है? मैं लोगों को यह कहते हुए भी सुनता हूं (और शायद सच है) लेकिन वास्तव में वेब पर कहीं भी एक वास्तविक स्टेट की तुलना नहीं कर सकता ...
व्लाद

3
मुझे नहीं लगता कि कोई भी वास्तव में वेब्रिक को बेंचमार्क करता है क्योंकि यह उत्पादन सर्वर बनने का इरादा नहीं है। यूनिकॉर्न, थिन या पैसेंजर अच्छी तरह से समर्थित हैं और बहुत बेहतर विकल्प हैं
जिम डेविल

0

उत्पादन मोड में चलने पर वेब्रिक की सबसे बड़ी कमजोरी यह है कि यह सिंगल थ्रेडेड, सिंगल प्रोसेस वेब सर्वर है, जिसका अर्थ है कि यह एक समय में केवल एक ही http अनुरोध को परोसने में सक्षम है।


यह सिंगल थ्रेडेड नहीं है। या यह उसी तरह है जैसे किसी भी आधुनिक लिपि की भाषा (जीआईएल के साथ) को लागू किया जाता है। लेकिन डेटाबेस एक्सेस और Ibr में IO पूरी तरह से मल्टीथ्रेडेड है।
लोथर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.