क्या कोई बेंचमार्क या तुलना है जो तेज है: nginx को नोड के सामने रखें और इसे सीधे स्टैटिक फ़ाइलों की सेवा दें या केवल नोड का उपयोग करें और इसका उपयोग करके स्टैटिक फ़ाइलों की सेवा करें?
nginx समाधान मेरे लिए अधिक प्रबंधनीय लगता है, कोई विचार?
क्या कोई बेंचमार्क या तुलना है जो तेज है: nginx को नोड के सामने रखें और इसे सीधे स्टैटिक फ़ाइलों की सेवा दें या केवल नोड का उपयोग करें और इसका उपयोग करके स्टैटिक फ़ाइलों की सेवा करें?
nginx समाधान मेरे लिए अधिक प्रबंधनीय लगता है, कोई विचार?
जवाबों:
मुझे यहाँ के जवाबों से असहमत होना पड़ेगा। जबकि नोड ठीक काम करेगा, सही तरीके से कॉन्फ़िगर किए जाने पर नग्नेक्स सबसे निश्चित रूप से तेज़ होगा। एक छोटे से पैटर्न के साथ nginx C को एक समान पैटर्न (केवल तभी कनेक्शन में लौटने पर) की आवश्यकता के अनुसार कुशलतापूर्वक कार्यान्वित किया जाता है। इसके अलावा, यह Sendfile syscall को उन फ़ाइलों की सेवा करने के लिए समर्थन करता है जो उतनी ही तेजी से होती हैं जितनी आप संभवतः सेवा करने वाली फ़ाइलों में प्राप्त कर सकते हैं, क्योंकि यह ओएस कर्नेल ही है जो काम कर रहा है।
अब तक nginx फ्रंट सर्वर के रूप में वास्तविक मानक बन गया है। आप स्थैतिक फ़ाइलों, gzip, SSL, और यहां तक कि बाद में लोड-संतुलन की सेवा में इसके प्रदर्शन के लिए इसका उपयोग कर सकते हैं।
पुनश्च: यह मानता है कि फ़ाइलें वास्तव में "स्थिर" हैं जैसे अनुरोध के समय डिस्क पर आराम करती हैं।
sendfile
- लेकिन ऐसा लगता है कि आपको कुछ कोड लिखना होगा, उदाहरण के लिए देखें। blog.std.in/2010/09/09/use-sendfile-with-nodejs
मैंने ab -n 10000 -c 100
एक स्थिर 1406 बाइट की सेवा के लिए एक त्वरित किया favicon.ico
, nginx, Express.js (स्टेटिक मिडलवेयर) और क्लस्टर एक्सप्रेस Express.js की तुलना। उम्मीद है की यह मदद करेगा:
दुर्भाग्य से मैं अपनी मशीन पर 1000 या यहाँ तक कि 10000 समवर्ती अनुरोधों को nginx के रूप में परीक्षण नहीं कर सकता, त्रुटियों को फेंकना शुरू कर देगा।
EDIT : जैसा कि आर्टवोक द्वारा सुझाया गया है, यहां क्लस्टर + static
मिडलवेयर (धीमी) के परिणाम हैं :
static
जो उत्पादन में करेगा, उसके कारण एक अविश्वसनीय अंतर होगा।
मुझे @ ग्रेमो के चार्ट की एक अलग व्याख्या है। यह मुझे समान संख्या में अनुरोधों (9-10k के बीच) पर नोड और नगनेक्स स्केल की तरह दिखता है। निश्चित रूप से nginx के लिए प्रतिक्रिया में विलंबता लगातार 20ms से कम है, लेकिन मुझे नहीं लगता कि उपयोगकर्ता आवश्यक रूप से उस अंतर को महसूस करेंगे (यदि आपका ऐप अच्छी तरह से बनाया गया है)। मशीनों की निश्चित संख्या को देखते हुए, इससे पहले कि मैं एक नोड मशीन को nginx में परिवर्तित करूं, यह देखते हुए कि नोड का स्थान सबसे अधिक लोड पहले स्थान पर होगा, जहां लोड का एक महत्वपूर्ण हिस्सा लगेगा। यदि आप पहले से ही लोड संतुलन के लिए nginx को एक मशीन समर्पित कर रहे हैं तो इसका एक प्रतिरूप है। अगर ऐसा है तो आपके पास स्थिर सामग्री के साथ-साथ आपकी सेवा भी हो सकती है।
किसी भी तरह से, मैं स्थैतिक फ़ाइलों को कैश करने के लिए Nginx सेटअप करूँगा ... आपको वहां एक बड़ा अंतर दिखाई देगा। फिर, आप उन्हें नोड से सेवा देते हैं या नहीं, आप मूल रूप से अपने नोड ऐप पर समान प्रदर्शन और समान लोड-राहत प्राप्त कर रहे हैं।
मैं व्यक्तिगत रूप से ज्यादातर मामलों में स्थैतिक संपत्ति की सेवा करने वाले मेरे नगनेक्स के विचार को पसंद नहीं करता
1) परियोजना को अब एक ही मशीन पर होना चाहिए - या संपत्ति में विभाजित किया जाना है (नगीनक्स मशीन पर) और वेब ऐप (स्केलिंग के लिए कई मशीनों पर)
2) Nginx config को अब स्थैतिक संपत्ति / पुनः लोड करने के लिए पथ स्थानों को बनाए रखना पड़ता है जब वे बदलते हैं।
यह एक मुश्किल सवाल का जवाब है। यदि आपने वास्तव में हल्के नोड सर्वर को केवल स्थिर फ़ाइलों की सेवा करने के लिए लिखा है, तो यह सबसे अधिक संभावना है कि यह नग्नेक्स की तुलना में बेहतर प्रदर्शन करेगा, लेकिन यह इतना आसान नहीं है। ( यहां "बेंचमार्क" की तुलना एक नोडज फ़ाइल सर्वर और लाइटटैप्ड से की गई है - जो स्टैटिक फ़ाइलों की सेवा करते समय ngingx के प्रदर्शन के समान है)।
स्थैतिक फ़ाइलों की सेवा के संबंध में प्रदर्शन अक्सर काम करने वाले वेब-सर्वर की तुलना में अधिक हो जाता है। यदि आप उच्चतम प्रदर्शन चाहते हैं, तो आप एंड-यूज़र्स के लिए विलंबता को कम करने और एज-कैशिंग से लाभ उठाने के लिए अपनी फ़ाइलों की सेवा के लिए एक सीडीएन का उपयोग कर रहे हैं।
यदि आप इसके बारे में चिंतित नहीं हैं, तो नोड अधिकांश स्थितियों में स्थिर फ़ाइलों की सेवा कर सकता है। नोड खुद को एसिंक्रोनस कोड के लिए उधार देता है, जो कि इस पर भी निर्भर करता है क्योंकि यह एकल-थ्रेडेड है और कोई भी अवरुद्ध i / o पूरी प्रक्रिया को अवरुद्ध कर सकता है, और आपके अनुप्रयोगों के प्रदर्शन को नीचा दिखा सकता है। संभावना से अधिक आप एक गैर-अवरुद्ध फैशन में अपना कोड लिख रहे हैं, लेकिन यदि आप समकालिक रूप से कुछ भी कर रहे हैं, तो आप अवरुद्ध करने का कारण बन सकते हैं, जो यह बताएगा कि अन्य क्लाइंट अपनी स्थिर फ़ाइलों को कितनी तेजी से सेवा दे सकते हैं। आसान उपाय यह है कि ब्लॉकिंग कोड न लिखें, लेकिन कभी-कभी यह संभावना नहीं होती है, या आप इसे हमेशा लागू नहीं कर सकते।
मुझे यकीन है कि विशुद्ध रूप से नोड.जेएस बहुत सारे पहलू में नैग्नेक्स को पछाड़ सकता है।
सभी ने कहा कि मुझे नग्नेक्स रहना है, एक अंतर्निर्मित कैश है, जबकि नोड.जेएस इसे स्थापित करने के साथ नहीं आता है (आप अपने खुद के फ़ाइल CACHE का निर्माण करना चाहते हैं)। कस्टम फ़ाइल कैश सुपर सरल रूप में nginx और बाजार में किसी भी अन्य सर्वर से बेहतर प्रदर्शन करता है।
इसके अलावा Nginx कई कोर पर चलता है। नोड की पूरी क्षमता का उपयोग करने के लिए आपको नोड सर्वर को क्लस्टर करना होगा। यदि आप यह जानना चाहते हैं कि कैसे पी.एम.
नोड के साथ प्रदर्शन निर्वाण प्राप्त करने के लिए आपको गहरी खुदाई करने की आवश्यकता है, यही एकमात्र समस्या है। एक बार जब हाँ किया ... यह Nginx धड़कता है।