2013-06-10 3 views
31

हम एडब्ल्यूएस (EC2) पर एक साधारण नमस्ते विश्व नोड सर्वर का उपयोग कर नोड प्रदर्शन बेंचमार्किंग रहे हैं पर बाहर maxing।Node.js 1000 समवर्ती कनेक्शन

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

नोड v0.10.5

var http = require('http'); 
var server = http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    res.end('loaderio-dec86f35bc8ba1b9b604db6c328864c1'); 
}); 
server.maxHeadersCount = 0; 
server.listen(4000); 

नोड यह सही से ज्यादा को संभालने में सक्षम होना चाहिए? किसी भी विचार की बहुत सराहना की जाएगी।

इसके अलावा फ़ाइल वर्णनकर्ता (नरम, कठोर, प्रणाली) 65,096 की तैयारी में हैं)

+1

आप अंततः कितने समवर्ती कनेक्शन मिला? और ईसी 2 उदाहरण पर क्या? – user3526

+1

@ user3526 माफ़ी इसे नहीं देख पाए। हम हम संभावित ठीक करना देखने के लिए कि हमारे एप्लिकेशन की समवर्ती कनेक्शन भावना बनाया और फिर पैमाने बाहर के दौरान कीमत के लिए उपयोग करने के लिए सबसे अच्छा उदाहरण आकार निर्धारित करने के बाद से हमारे एप्लिकेशन 100 अनुरोधों के लाखों लोगों की एक दिन की प्रसंस्करण किया गया था यह कर रहे हैं। यह एक लंबा समय रहा है (जाहिर है) लेकिन मुझे लगता है कि हम एक छोटे से 3k या 4k तक (जो एकल कोर था) तक पहुंच गया था और यह थोड़ा प्रति कोर नीचे चला गया क्योंकि हमने इंस्टेंस आकार को बढ़ाया था। बेशक ec2 ने तब से सभी उदाहरणों पर चश्मे बदल दिए हैं। – jadent

उत्तर

28

उपयोग posix मॉड्यूल फ़ाइल की संख्या पर सीमा बढ़ाने का descriptors अपने प्रक्रिया का उपयोग कर सकते हैं।

स्थापित posix

npm install posix 
फिर अपने कोड जब आप अपने एप्लिकेशन लॉन्च चलाता है कि में

...

var posix = require('posix'); 

// raise maximum number of open file descriptors to 10k, 
// hard limit is left unchanged 
posix.setrlimit('nofile', { soft: 10000 }); 
+0

धन्यवाद लेकिन फाइल वर्णनकर्ता पहले से ही 65,096 – jadent

+0

को बढ़ा दिया है कि हम इस एक कोशिश दे दी है और यह काम किया! डैनियल क्या आपको पता है कि आदि/सुरक्षा/limit.conf के माध्यम से उलिमिट क्यों सेट करना काम नहीं करता है लेकिन पॉज़िक्स का उपयोग करता है? – jadent

+2

लॉगिन पर सीमा लागू हैं। आप खोल से लॉग आउट नहीं हुआ, तो और फिर संपादन /etc/security/limits.conf बाद में वापस तो आप पुराने सीमा देखना होगा। आप 'ulimit -a' – Daniel

10

आप फ़ाइल का डिफ़ॉल्ट सीमा पूरी कर चुके descriptors एक प्रक्रिया का उपयोग कर सकते (1024)। आप "ulimit -n" चलाकर कमांड लाइन पर सीमा की जांच कर सकते हैं। सीमा बदलने के लिए, आपको /etc/security/limits.conf को संपादित करने की आवश्यकता है। फॉलो ब्लॉक जोड़ें:

* soft nofile 65535 
* hard nofile 65535 
root soft nofile 65535 
root hard nofile 65535 

"*" रूट को छोड़कर सभी उपयोगकर्ताओं पर लागू होता है। रूट के लिए सीमा अलग से जोड़ा जाना चाहिए। नरम और कड़ी सीमा है। उपयोगकर्ताओं को अपनी सीमा को नरम सीमा तक बदलने की अनुमति है लेकिन हार्ड सीमा से अधिक नहीं है।

एक बार फ़ाइल संपादित किया गया है, लॉग आउट और फिर से वापस में। Ulimit -n चलाकर परिवर्तन की पुष्टि करें। अपनी नोड प्रक्रिया को पुनरारंभ करें और आपको जाने के लिए अच्छा होना चाहिए।

वहाँ भी एक सिस्टम-वाइड फ़ाइल वर्णनकर्ता सीमा कि निम्न आदेश के साथ बढ़ाया जा सकता है है:

sysctl -w fs.file-max=65535 
+0

धन्यवाद। परीक्षण से पहले हमने पहले से ही फाइल डिस्क्रिप्टर को 650 9 6 तक बढ़ा दिया था (सॉफ्ट, हार्ड और सिस्टम वाइड दोनों) – jadent

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