Twitterのサイトのようにしばらくすると投稿されたつぶやきが出るような仕組みは、Ajaxで5秒起きとかに更新データが有るか確認してあったら出すということをしているのでしょうか?


そうするとある人が1ページ開けているだけで、10分そのまましていたら投稿もないのに、
更新頻度5秒として、1分で12回、10分で120回もシステム側にアクセスしているということでしょうか?利用者が多くなくてもめちゃくちゃ負荷がかかるような気がしますが、そんなものでしょうか?

それともサーバ側から変化があったときにプッシュされているわけではないですよね?

一般的にこういうサイトはどうしているのでしょうか?
更新されたかどうかをDBによみにいったりしていたらDBの読み込みの負荷がハンパない気がします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2010/01/05 23:30:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:phero No.1

回答回数55ベストアンサー獲得回数9

ポイント60pt

Twitterの場合はAjaxで最新記事を取得しているようですね。

ですので、ページを開いているユーザが多いとその分負荷がかかります。

実際、Twitterはそこそこの頻度でサーバがダウンしていますよね。

ご参考までにTwitterのシステムについての記事です。

http://highscalability.com/scaling-twitter-making-twitter-10000-...


ユーザが何千万人・何億人となるようなサービスにおいて

スケーラビリティ対策は必須の作業ではありますが、

そのやり方については企業ごとに様々ですね。


もし何かTwitter的なサービスの提供を考えているのであれば、

手軽にスケーラビリティを実現できるGoogle App Engineをご利用になるのがお勧めです。

http://code.google.com/intl/ja/appengine/

id:dingding

更新頻度とそれにおける負荷が気になるんです。

2009/12/31 14:17:34
  • id:kn1967
    拒否設定によって、回答権も無いんだけど、少しだけ。

    >DBの読み込みの負荷がハンパない

    詳細を理解しようとすれば、サーバ内の処理を理解する必要があるが、
    大雑把に言うと、つぶやき程度の容量であれば、サーバとしては、
    メモリキャッシュだけでほぼ対応できるし、
    DBにアクセスする場合でもDB側のキャッシュがある。

    問題になるとすれば、サーバ能力よりも回線の混雑の方だが、
    これはまた別の話だね。

    以上、参考になるかな?
  • id:ku__ra__ge
    twitterは多分ふつうにn秒ごとに更新データ有無の確認に行っていると思いますが、LingerというチャットサービスはCometという技術で擬似的なサーバ→クライアント通知を実現させていました。
    http://japan.cnet.com/blog/kenn/2006/09/22/entry_lingr_and_comet/
    (それそれで別の問題が発生するらしいですけど。詳しくは上記URL参照)
  • id:dingding
    ありがとうございます。Cometも調べてみます

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません