2011-04-23 6 views
14

मैं सॉकेट.ओ और नोड.जे.एस. का उपयोग करके लिखे गए वेबसाकेट एप्लिकेशन की स्केलेबिलिटी का परीक्षण कर रहा हूं। मैं परीक्षण पर जोर देना चाहता हूं और प्रदर्शन को बेंचमार्क करना चाहता हूं। मैं कौन से टूल्स का उपयोग कर सकता हूं?मैं वेबसाइकिल-आधारित Node.js एप्लिकेशन को कैसे बेंचमार्क कर सकता हूं?

अब तक मैंने wsbench में देखा है लेकिन मैं किसी भी विकल्प का पता लगाना चाहता हूं।

उत्तर

4

Node.js. के लिए एक बहुत ही सरल Socket.IO client implementation है। यह वास्तविक बेंचमार्किंग टूल नहीं है, लेकिन यह सॉकेट.आईओ के प्रोटोकॉल के बारे में जानता है।

इसका उपयोग करके, आपके आवेदन के साथ बातचीत करने वाले क्लाइंट को लिखना काफी आसान है।

+2

मैं यह करने की कोशिश कर रहा है है पिछले कुछ दिनों से चालू और बंद और इस दृष्टिकोण के साथ गंभीर समस्याएं हैं। यह कम संख्या में समवर्ती कनेक्शन के लिए ठीक है, लेकिन कुछ सौ से अधिक कनेक्शन के लिए यह अलग हो जाना शुरू हो जाता है। मैं कुछ बेवकूफ कर रहा हूं, लेकिन जब वे संदेश अक्सर प्राप्त करते हैं तो कनेक्शन चुपचाप विफल हो जाते हैं। यह कम समेकन पर नहीं होता है, केवल उच्च सहमति पर। जो कुछ भी कारण है, यह वास्तविक गंभीर लोड परीक्षण को असंभव बनाता है। क्या यह मेरे ऐप के साथ एक समस्या है? क्या आपको उच्च सहमति के साथ सफलता मिली है? – drewww

+0

@Drewww बस यह सोचकर कि आप इस के साथ कैसे जा रहे हैं, मैंने https://github.com/drewww/socket.io-benchmarking पर अपना कुछ कोड पाया और देखा कि ऐसा लगता है कि आपने क्लाइंट को पायथन में लागू किया है? –

+0

पायथन कार्यान्वयन या तो बहुत अच्छा काम नहीं करता था। गंभीर पैमाने पर काम करने के लिए मुझे एकमात्र तरीका (> 1k concurrency) जावा का उपयोग करना था। पाइथन प्रयास अभी भी उस रेपो में है, लेकिन यह वास्तव में प्रभावी ढंग से काम नहीं करता है। – drewww

10

दिन को बेंचमार्किंग 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 का उपयोग करना था जो नोड के नए संस्करणों (लेखन के रूप में) के तहत संकलित नहीं होगा। ।

0

कितने समवर्ती कनेक्शन स्थापित किए जा सकते हैं, इसकी बेंचमार्किंग के लिए मैं wsbench की अनुशंसा करता हूं। हालांकि यह सॉकेट.आईओ साइट्स के लिए काम नहीं करेगा (क्योंकि अधिक जटिल हैंडशेक)। मैं इसका शोध कर रहा था और कुछ टूल्स पाए जो बस सॉकेट.आईओ सर्वर से कनेक्शन स्थापित करते थे। वास्तविक प्रदर्शन को मापने के लिए यह पर्याप्त नहीं है। आपको अपने वेब एप्लिकेशन के वास्तविक ग्राहक को अनुकरण करने वाले वास्तविक संदेश भेजने और प्राप्त करने की आवश्यकता है। मैं कैसे यहाँ अपने खुद के बेंचमार्क बनाने के लिए पर कुछ विचार का वर्णन किया है: Benchmarking for Node.JS/Socket.IO sites

3

https://www.npmjs.org/package/thor

यह एक कमांडलाइन उपयोगिता और अपाचे पीठ के रूप में इसी तरह के उत्पादन

 

Thor:             version: 1.0.0 

God of Thunder, son of Odin and smasher of WebSockets! 

Thou shall: 
- Spawn 1 workers. 
- Create 2 concurrent/parallel connections. 
- Smash 100 connections with the mighty Mjölnir. 

The answers you seek shall be yours, once I claim what is mine. 

Connecting to ws://server:8080/examples/websocket/chat 

    Opened 100 connections 


Online    439 milliseconds 
Time taken   441 milliseconds 
Connected   100 
Disconnected   0 
Failed    55 
Total transferred 132.62kB 
Total received  71.85kB 

Durations (ms): 

        min  mean  stddev median max 
Handshaking   1  5    3  4 20 
Latency    0  0    1  0 3 

Percentile (ms): 

         50%  66%  75%  80%  90%  95%  98%  98% 100% 
Handshaking   4  5  5  6  7  11  17  20  20 
Latency    0  0  1  1  1  1  1  2  3 
+4

मैं कुछ लोड परीक्षण करने के लिए हाल ही में थोर का उपयोग कर रहा था और पाया कि थोर वास्तव में समवर्ती कनेक्शन नहीं खोलता है। वे खोले जाने के तुरंत बाद बंद हो जाते हैं। (मैंने HAProxy आँकड़े स्क्रीन का उपयोग करके यह खोजा।) –

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

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