2017-01-04 8 views
5

मैं अपने ऐप की लागत का सटीक अनुमान लगाने के लिए फायरबेस में संदेशों के आकार की गणना करने की कोशिश कर रहा हूं।कंप्यूटिंग फ़ायरबेस संदेश आकार

मैंने देखा कि रीयलटाइम डेटाबेस कैलक्यूलेटर अपेक्षित डेटा आकारों से बड़ा दिखा रहा था। इसे प्रमाणित करने के, मैं एक खिलौना आवेदन डेटा के साथ "परीक्षण" नामक केवल एक रेफरी है कि शुरू कर दिया:

{"foo": "bar"} 

अन्य उत्तर पर जा रहे हैं, मेरे अनुमान इस डेटा 20 बाइट्स से कम है।

इस कोड के साथ डेटा प्राप्त कर रहा है:

firebase.database().ref("test").once("value", function(snapshot) { 
    console.log(snapshot.val()); 
}); 

यहाँ एक jsfiddle showing this toy example है।

मैं डेटा को रेफरी और console.log पकड़ता हूं। मैंने इस उदाहरण को 10 बार से कम किया है। जब मैं खिलौना एप्लिकेशन के रीयलटाइम डेटाबेस उपयोग टैब को देखता हूं, तो यह 30KB बैंडविड्थ की तरह कुछ दिखाता है।

अपेक्षित डेटा उपयोग (10 * 20 बाइट्स = 200 बाइट्स) में इस बड़े अंतर के लिए खाते में कौन सा अन्य डेटा भेजा जा रहा है, वास्तविक 30 केबी भेजा गया है?

क्या डेटा प्रारंभ में जोड़े जाने वाले ऐप को प्रारंभ करते समय कुछ प्रारंभिक ओवरहेड है?

संपादित करें:

cartant की सलाह के बाद, मैं फ्रेम WebSocket से भेजा जा रहा लॉग इन किया। यहाँ (इस से पहले मैं लगभग 200 बाइट्स के कुछ आरंभीकरण संदेशों देखें) मैं क्या पाया है:

 Data              Length  
    {"t":"d","d":{"r":22,"a":"q","b":{"p":"/test","h":""}}}  55 
    {"t":"d","d":{"b":{"p":"test","d":{"foo":"bar"}},"a":"d"}} 58 
    {"t":"d","d":{"r":23,"a":"n","b":{"p":"/test"}}}   48 
    {"t":"d","d":{"r":22,"b":{"s":"ok","d":{}}}}    44 
    {"t":"d","d":{"r":23,"b":{"s":"ok","d":""}}}    44 

तो ऐसा लगता है किसी भी संदेश के लिए एक ~ 200-250 बाइट भूमि के ऊपर मौजूद है। क्या कोई इसकी पुष्टि कर सकता है? यह अभी भी मैंने पहले बताए गए अंतर को पूरी तरह से समझा नहीं है (10 संदेश * 250 बाइट्स = 2.5 केबी बनाम 30 केबी)।

अद्यतन:

वर्तमान बैंडविड्थ उपयोग 155 KB पर निर्भर है। मुझे यकीन नहीं है कि इस पोस्ट पर 35 दर्शकों के साथ यह संख्या कैसे संभव है। आदेश में (मैं अभी भी यकीन है कि बैंडविड्थ वास्तव में गणना के तरीके नहीं कर रहा हूँ) इस की भावना प्राप्त करने की कोशिश करने के लिए, यहाँ मेरे विचार कर रहे हैं:

200 bytes to initialize/connect 
220 bytes per message (200 bytes of overhead + 20 bytes in message) 
100 times sent (this is probably an overestimate, as there are 35 views on this post, but I have viewed it around 10 times myself) 

(200 bytes + 220 bytes) * 100 views = 42000 bytes or 42 KB. 

तो 155 KB को पाने के लिए या तो यह बहुत 100 से अधिक बार भेजा गया था , या कुछ अस्पष्ट ओवरहेड है। साथ ही, मुझे लगता है (जो मुझे नहीं पता) कि प्रारंभ करने के लिए ओवरहेड 200 बाइट्स है और ओवरहेड कोई संदेश भेजने के लिए 200 बाइट्स है।

+2

यदि आप क्रोम का उपयोग कर रहे हैं, तो आप देव उपकरण का उपयोग कर वास्तविक वेबसाइकिल यातायात देख सकते हैं। आपको यह उपयोगी लगेगा। – cartant

+1

हां, हमारे पास एक ही समस्या है: http://stackoverflow.com/questions/41471842/why-does-the-firebase-bandwidth-keep-increasing-for-no-reason?noredirect=1#comment70152399_41471842 – Coder1000

+1

यहां एक ही समस्या है साथ ही: http://stackoverflow.com/questions/38959321/firebase-database-bandwidth-usage-growing-rapidly-even-when-the-database-is?rq=1 – shell

उत्तर

3

मैंने कुछ और परीक्षण चलाए हैं (22 बाइट्स पढ़ रहे हैं) और लगता है कि बैंडविड्थ की गणना में एक संभावित बग है। यदि नहीं, तो बैंडलोड की रीलोड पर दरें बहुत बड़ी हैं। यहाँ मेरी परीक्षण कर रहे हैं:

Test 1 (600 requests of 22 bytes with only one initial connect to the page) 

83 KB total for 600 requests 
83 KB = 83,000 bytes/600 requests = 138.33 bytes per request 
data sent = 22 bytes 
138.33 bytes - 22 bytes = 116.33 bytes overhead per message sent 

कौन सा उचित और बहुत अच्छी है (हालांकि यह firbase के मूल्य निर्धारण पृष्ठ पर कारक हो प्रतीत नहीं होता है)।

मैंने डेढ़ घंटे तक इंतजार करने के बाद दूसरा परीक्षण चलाया ताकि वास्तविक समय डेटाबेस उपयोग अपडेट हो सके।

टेस्ट 2 इसमें इस बात पर मैं एक बग हो सकता है लगता है:

Test 2 (20 page reloads sending one request) 

96 KB total for 20 page reloads + 20 requests 
96 KB/20 = 4.8 KB per reload 

मैं यह सही हो सकता है नहीं लगता है, जो मुझे विश्वास करने के लिए वहाँ वास्तविक समय डेटाबेस के डेटा के उपयोग हिस्से में एक बग है कि । मैंने देखा कि जब डेटा का उपयोग किया जाता है तो लगभग 2-4 केबी तक चढ़ जाएगा (मेरे पास केवल 22 बाइट संग्रहीत हैं)।

मुझे पूरा यकीन है कि यह उपयोग केस आसानी से पुन: उत्पन्न होता है। मैं इसे ऊपर उठाने वाला नहीं हूं क्योंकि यह वास्तव में एक उत्तर नहीं है, यह सिर्फ और प्रश्न देता है, लेकिन इन परीक्षण मामलों को चलाने के दौरान मुझे यही मिला।

धन्यवाद

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