2016-07-29 3 views
0

リアルタイムのデータを表示するための速度と待ち時間に疑問があります。リアルタイムのデータを同じ応答時間のユーザーに表示

私は単純なコレクションクエリでMySqlテーブルからデータを取得する毎秒Fire Ajaxリクエストによってユーザーに読み取り時刻データを表示したいとします。そのために

現在、これらの2つのオプションが良いだろう、これらのオプションの中で

    1. のMySQL /アマゾンオーロラ
    2. 私の心の中にファイルシステムをバブリングしていますか?または他の解決策?

      実際に確認したところ、ブラウザで1ページを開くと、500ms未満の応答でajaxリクエストがPHP, MySql, Nginxスタックを使用して応答します。

      しかし、さらに多くのページを開いた場合、同じAjaxリクエストはすべての訪問者に500ms未満である1 second以上の応答を返します。

      このように、訪問者が増加すると、ajaxリクエストは非常に貧弱な応答を返します。

      Node.js+MySqlでも同じ結果が確認されました。

      jsonファイルをレコードとして作成し、ファイルからデータをフェッチするのは良いですか?または他の解決策?

  • 答えて

    0

    実際にはデータベースを使用して実際のデータを保存する必要がありますが、実際の更新を追跡するためにメモリキャッシュ(内部辞書または別のコンポーネント)を簡単に追加できます。私たちは、ユーザ123のために新しい何かを持っているか、

    1. のMemcache:あなたの典型的なAJAXリクエストより

      は次のようになりますか?

    2. 最終更新日だった10分前

    3. なるほど、そう何も新しい、のがnullを返してみましょう。

    あなたはデータの書き込み:データベースに

    1. 入れデータを

    2. アップデートは、実際のキーは異なる場合があります

      memcacheの

    のクライアントのために時間をlastupdated - 例えばチャットルームのID。アイデアは、更新が実際に起こったときにのみデータベースを読み込むことです。

    レベル2:

    あなたは呼び出しの数が多いとウェブサーバと、クライアントのインターネットをあなたに燃焼します。あなたは何かをすることができます:

    DateTime start = DateTime.Now; 
    while(Now.Subtract(30 seconds) < start) 
    { 
        if (hasUpdates) return updates; 
        sleep(100); 
    } 
    

    クライアントは30秒ごとに1回の時間を呼び出します。 サーバーは新しいデータに気づいたときにすぐに応答します。

    +0

    はい、Memcacheは良いアイデアです。私はwebsocketを使って同じことを確認しています。 しかし、私にとっては挑戦的な仕事のためにwebsocketでは、接続できる最大数を同時に確認することができます。 – Piyush

    関連する問題