2014-04-12 7 views
7

मैंने देखा है कि आप nginx पीछे एक uWSGI उदाहरण के भीतर कई प्रक्रियाओं शुरू कर सकते हैं:एकाधिक सर्वर nginx और uWSGI का उपयोग कर प्रक्रियाओं

uwsgi --processes 4 --socket /tmp/uwsgi.sock 

या आप शुरू कर सकते हैं विभिन्न सॉकेट और उन दोनों के बीच लोड संतुलन के प्रयोग पर कई uWSGI उदाहरणों nginx:

upstream my_servers { 
    server unix:///tmp.uwsgi1.sock; 
    server unix:///tmp.uwsgi2.sock; 
    #... 
} 

क्या इन के बीच का अंतर 2 रणनीति है और एक दूसरे के ऊपर प्राथमिकता दी जाती है?

nginx (पहले मामले में) द्वारा लोड संतुलन कैसे करता है यूडब्ल्यूएसजीआई (दूसरे मामले में) द्वारा लोड संतुलन से भिन्न होता है?

nginx एकाधिक होस्टों पर सर्वरों के सामने हो सकता है। क्या आप एक उदाहरण के भीतर ऐसा कर सकते हैं? क्या कुछ यूडब्ल्यूएसजीआई विशेषताएं केवल एक ही यूडब्ल्यूएसजीआई प्रक्रिया (यानी साझा स्मृति/कैश) के भीतर काम करती हैं? यदि ऐसा है तो दूसरे दृष्टिकोण से पहले चरण में स्केल करना मुश्किल हो सकता है ....

उत्तर

7

अंतर यह है कि यूडब्ल्यूएसजीआई के मामले में कोई "वास्तविक" भार संतुलन नहीं है। पहली निःशुल्क प्रक्रिया हमेशा प्रतिक्रिया देगी, इसलिए यह दृष्टिकोण कई उदाहरणों के बीच nginx लोड संतुलन होने से बेहतर तरीका है (यह केवल स्थानीय उदाहरणों के लिए सच है)। आपको ध्यान में रखना जरूरी है कि "जड़ी बूटी की समस्या है"। इसके प्रभाव यहां सामने आए हैं: http://uwsgi-docs.readthedocs.org/en/latest/articles/SerializingAccept.html

अंत में, यूडब्ल्यूएसजीआई की सभी विशेषताएं मल्टीथ्रेड/मल्टीप्रोसेस (और ग्रेनेड्रेड) हैं, इसलिए कैशिंग (उदाहरण के लिए) सभी प्रक्रियाओं द्वारा साझा की जाती है।

+3

क्या आप विस्तारित कर सकते हैं कि वास्तव में यूडब्ल्यूएसजीआई प्रक्रियाओं पर कौन सा डेटा साझा किया जाता है? क्या प्रक्रिया अलगाव में नहीं चल रही है? –

+1

मैं भी जानना चाहता हूं। – ruipacheco

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