2017-01-04 2 views
5

私は、アプリケーションのコストを正確に見積もるために、firebaseのメッセージのサイズを計算しようとしています。firebaseのメッセージサイズを計算する

リアルタイムデータベース電卓が予想よりも大きなデータサイズを表示していることに気がつきました。これを確認するために、私はデータを「テスト」と呼ばれる単一のREFがあるおもちゃのアプリケーションを開始しました:

{"foo": "bar"} 

は、他の回答に行く、私の推定値は、このデータは20バイトの下にあるということです。このコードを使用してデータを取得

:ここ

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

jsfiddle showing this toy exampleです。

私はrefとconsole.logデータを取得します。私はこの例に10回以下でアクセスしました。おもちゃアプリケーションのリアルタイムデータベース使用量タブを見ると、使用される30KBの帯域幅のようなものが表示されます。

予想されるデータ使用量(10 * 20バイト= 200バイト)のこの大きなギャップのために、他のどのようなデータがアカウントに送信されますか、実際の30KBが送信されますか?

データ使用量を増やすアプリを初期化するときに初期オーバーヘッドがありますか?

EDIT: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 KBと30 KBを記録したもの)を完全には説明していません。

更新日:

現在の帯域幅使用量は最大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. 

だから、これは100倍よりもはるかに多くを送ったいずれかの155キロバイトを取得します、または説明できないオーバーヘッドがあります。また、私は(わからない)初期化するオーバーヘッドが200バイトで、メッセージを送信するオーバーヘッドが200バイトであると仮定しています。

+2

Chromeを使用している場合は、開発ツールを使用して実際のWebSocketトラフィックを確認できます。それが役に立つかもしれません。 – 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バイトを読む)を実行し、帯域幅の計算にバグがあると考えています。そうでない場合、リロード時の帯域幅の割合は非常に大きくなります。ここに私のテストです。(これはfirbaseの価格設定ページ上で織り込まれていないようですが)合理的かつかなり良いです

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 

リアルタイムデータベースの使用状況が更新されるように、1時間半待ってから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は、私はバグかもしれないと思うものを含んでいます。私は使用したデータが約2〜4kb上昇することを爽やかに感じました(私は22バイトしか保存していません)。

このユースケースは簡単に再現可能です。私は実際には答えではないので、これ以上upvoteするつもりはありません、それだけでより多くの質問を提供しますが、私はこれらのテストケースを実行するときに私が見つけたものです。

ありがとう

関連する問題