performance - Netty TrafficCounter -
मैं वर्तमान में io.netty.handler.traffic.ChannelTrafficShapingHandler और amp; Io.netty.handler.traffic.TrafficCounter एक netty ग्राहक और सर्वर भर में प्रदर्शन को मापने के लिए मैं लगातार क्लाइंट पर सर्वर पर वर्तमान लिस्ट और चालू रीड के लिए वैल्यू देखता हूं। लिखने / पढ़े जाने के KB / s पर विचार करने के लिए मैं इस अंतर के लिए कैसे खाता कर सकता हूं।
2014-10-28 16: 57: 50,0 99 [टाइमर -4] जानकारी पेर्फलॉगिंग 130 - नेटी यातायात आँकड़े लिखें सीमा के साथ TrafficShaping: 0 पढ़ें सीमा: 0 और काउंटर: मॉनिटर ChannelTC431885482 वर्तमान गति पढ़ें: 3049 KB / s , लिखें: 0 KB / s वर्तमान पढ़ें: 90,847 KB वर्तमान लिखें: 0 KB
2014-10-28 16: 57: 42,230 [ServerStreamingLogging] डीबग cfsrlServerStreamingLogger: 115 - सीमा लिखें साथ यातायात सांख्यिकी WKS226-39843-MTY6NDU6NTAvMDAwMDAw TrafficShaping: 0 पढ़ें सीमा: 0 और काउंटर: मॉनिटर ChannelTC385810078 वर्तमान स्पीड पढ़ें: 0 KB / s, लिखें: 3049 KB / s वर्तमान पढ़ें: 0 KB वर्तमान लिखें: 66,837 KB
क्या क्लाइंट और सर्वर के बीच कुछ प्रकार की संपीड़न है?
मैं देख सकता हूं कि मेरा क्लाइंट साइड वैल्यू लगभग 3049 * 30 = 91470 केबी है, जहां 30 सेकंड्स की संख्या होती है जहां संचयी आकृति की गणना की जाती है
स्कॉट सही है, इसके आसपास कुछ फ़िक्स हैं जो इसे भी ध्यान में रखते हैं।
कुछ व्याख्या:
- पढ़ने वास्तव में वास्तविक पटकथा बैंडविड्थ है और बाइट्स अकाउंट पढ़ता है (क्योंकि सिस्टम पढ़ने के स्वागत का मूल नहीं है)
-
लिखने की घटनाओं के लिए, सिस्टम उनका स्रोत है और उन्हें प्रबंधित किया जाता है, इसलिए लेखन के 2 प्रकार (और अगले दुविधा में हो जाएगा) हैं:
- प्रस्तावित राईट जो अभी तक भेजा जाता है नहीं लेकिन बैंडविड्थ (lastWriteThroughput) में ध्यान में रखा ठीक पहले और वर्तमान लिखने में (currentWrittenBytes)
- वास्तविक लेखन जब वे प्रभावी ढंग से तार करने के लिए धकेल दिया जाता है
वर्तमान मुद्दे currentWrittenBytes वास्तविक से अधिक हो सकता है कि है लिखता है क्योंकि वे ज्यादातर fut में निर्धारित हैं Ure, इसलिए वे हैंडलर से लेखन गति पर निर्भर करते हैं जो लेखन घटनाओं का स्रोत है। ठीक बाद, हम पर क्या कर रहा है "प्रस्तावित / अनुसूचित" और क्या वास्तव में "भेजा" है और अधिक सटीक हो जाएगा:
- प्रस्तावित lastWriteThroughput और currentWrittenBytes में ध्यान में रखा राईट
- असली लिखने वाली कार्रवाइयों को वास्तविक वाइटटयूआरयूयूयूपीट और रीयल-विघ्नबच्चों में ले जाया जाता है जब तार पर लिखते हैं (कम से कम पाइप लाइन पर)
अब एक दूसरा तत्व है, अगर आप चेक इंटरफ़ेयर 30 से सेट करते हैं
- बैंडविड्थ (वैश्विक औसत और यातायात पर इतने नियंत्रण) की गणना 30 के अनुसार की जाती है (पढ़ना या लिखना)
- छोटे "काउंटर 0 पर रीसेट कर दिए जाते हैं, जबकि संचयी काउंटर नहीं होते हैं: यदि आप संचयी काउंटर का उपयोग करते हैं, तो आपको यह देखना चाहिए कि बाइट्स प्राप्त / प्रेषित लगभग समान होनी चाहिए, जबकि प्रत्येक 30" छोटे "काउंटर (वर्तमान Xxxx) 0 पर रीसेट हो जाते हैं
इस चेक अंतराल के मूल्य जितना छोटा है, बैंडविड्थ बेहतर है, लेकिन बहुत अधिक बार फिर से रीसेट को रोकने के लिए नहीं बैंडविड्थ कम्प्यूटेशंस पर कई थ्रेड गतिविधियां सामान्य तौर पर, 1s का डिफ़ॉल्ट काफी कुशल होता है।
उदाहरण के लिए देखा जा सकता है अंतर क्योंकि प्रेषक की 30 वीं घटना रिसीवर के 30s घटना के साथ "सिंक्रनाइज़" नहीं है (और नहीं होगी)। तो आपके नंबरों के अनुसार: जब रिसीवर (रीड) 30 के इवेंट के साथ अपने काउंटर को रीसेट कर रहा है, तो लेखक 8 के बाद के अपने काउंटर (24 010 KB) रीसेट करेगा।
Comments
Post a Comment