दिन को बेंचमार्किंग node.js और socket.io में देखते हुए, मैंने कई समाधानों की कोशिश की, मैंने पाया कि आप socket.io को बेंचमार्क करने के लिए wsbench का उपयोग नहीं कर सकते क्योंकि socket.io का अपना प्रोटोकॉल है कनेक्शन बनाने के लिए संबोधित किया।
कोई भाग्य के साथ कुछ अन्य समाधानों की कोशिश करने के बाद मैंने socket.io-benchmark का उपयोग करके समाप्त हो गया और मैंने बस एम 1। बड़े ईसी 2 उदाहरण पर 60,000 कनेक्शन मारा, जिसमें कमरे के अतिरिक्त कमरे के साथ केवल एक कोर का उपयोग किया गया। मेरे मामले में मैं केवल socket.io कनेक्शन के ओवरहेड को मापना चाहता था (जिसके लिए मुझे सॉकेट.ओ-बेंचमार्क में कुछ कोड टिप्पणी करने की आवश्यकता थी) इसलिए मेरे पास क्लाइंट और सर्वर के बीच कोई संदेश नहीं भेजा गया था।
यह देखना दिलचस्प था कि ग्राहकों ने सर्वर से अधिक CPU और मेमोरी ली। तो सुनिश्चित करें कि जिस क्लाइंट सर्वर से आप बेंचमार्किंग कर रहे हैं वह बीफ़ी है, मैंने ईसी 2 सी 1 एक्सक्लर्ज का उपयोग किया था और इसमें बहुत सारे कमरे थे। और मैंने बेंचमार्क को 6 अलग-अलग प्रक्रियाओं में तोड़ दिया ताकि यह कई कोरों में स्केल कर सके और स्मृति सीमा से बच सके।
ग्राहकों पर पर्याप्त <rampup in seconds>
विकल्प सेट करने के लिए सावधान रहें, यदि आप इसे सबकुछ बफर में डाल देते हैं और रोकते हैं।
सॉकेट.ओ-बेंचमार्क के साथ एकमात्र समस्या यह है कि मुझे v8-profiler पर निर्भरता के कारण सभी काम करने के लिए नोड v0.4.12 का उपयोग करना था जो नोड के नए संस्करणों (लेखन के रूप में) के तहत संकलित नहीं होगा। ।
स्रोत
2012-02-04 15:52:20
मैं यह करने की कोशिश कर रहा है है पिछले कुछ दिनों से चालू और बंद और इस दृष्टिकोण के साथ गंभीर समस्याएं हैं। यह कम संख्या में समवर्ती कनेक्शन के लिए ठीक है, लेकिन कुछ सौ से अधिक कनेक्शन के लिए यह अलग हो जाना शुरू हो जाता है। मैं कुछ बेवकूफ कर रहा हूं, लेकिन जब वे संदेश अक्सर प्राप्त करते हैं तो कनेक्शन चुपचाप विफल हो जाते हैं। यह कम समेकन पर नहीं होता है, केवल उच्च सहमति पर। जो कुछ भी कारण है, यह वास्तविक गंभीर लोड परीक्षण को असंभव बनाता है। क्या यह मेरे ऐप के साथ एक समस्या है? क्या आपको उच्च सहमति के साथ सफलता मिली है? – drewww
@Drewww बस यह सोचकर कि आप इस के साथ कैसे जा रहे हैं, मैंने https://github.com/drewww/socket.io-benchmarking पर अपना कुछ कोड पाया और देखा कि ऐसा लगता है कि आपने क्लाइंट को पायथन में लागू किया है? –
पायथन कार्यान्वयन या तो बहुत अच्छा काम नहीं करता था। गंभीर पैमाने पर काम करने के लिए मुझे एकमात्र तरीका (> 1k concurrency) जावा का उपयोग करना था। पाइथन प्रयास अभी भी उस रेपो में है, लेकिन यह वास्तव में प्रभावी ढंग से काम नहीं करता है। – drewww