2011-01-18 21 views
0

私は複数のサイトに配置されますiframe内(広告に類似)絵を持っています。サーバーログファイルを使用してインプレッションを検出する必要がありますか? DBを使用して各インプレッションを追跡する必要がありますか?高速でかつ大量のトラフィックを処理できる方法印象を追跡するためにログファイルまたはDBを使用する必要がありますか?

?おかげ

答えて

1

は、この質問に対する答えは本当にあなたが使用しているデータベースの種類に依存し、どのように忙しいWebサーバのディスクとデータベースが本当にあなたのデプロイメント環境です。

  • インプレッションが行われるたびにファイルへのログエントリをキャッチすると、かなり高速です。 (あなたがディスククラッシュが発生しない限り)あなたは、毎日のテーブルエントリで
  • 通常のMySQLデータベースを新しいファイルにこのファイルを移動し、それを処理するために、いくつかのバックエンドシステムに送信し、あなたが最も可能性の高いエントリを失うことはないことができますデータに対してクエリを実行するために同じテーブルを使用する必要がある場合を除いて、これは過度の可能性があります。それはおそらくスケールも良くなりますが、多くのトラフィックがある場合は、ここにたくさんのエントリがある可能性があります。
  • このためのNoSQLデータベースを使用すると良い試合になる可能性があり、これはおそらく、Twitterのようなスケーリングにそれをスケールアップだろう - それはあなたのニーズに合わせて、おそらく過剰ですので、ほとんどのサイトは、Twitterが好きされていないにもかかわらず:)

あなたは通常のウェブサイトを持っているなら、おそらく簡単な方法で最初のやり方をすることができます。そうでなければ、あなたはそれに多くの時間を費やしていません。

+0

私は時速> 10Mエントリを持つことが目標です。私はLogについて考えているかMongoDBを使っています。しかし、mongoDBを使用すると、HTTPリクエストをMongoDBに入れるためにスクリプト(例えば、PHP)を実行する必要があるのでしょうか?または私は(何らかの形で)DBに直接ログを書き込むようにWebサーバーを設定できますか? – murvinlai

+0

私はこの種のボリュームで作業したことはありませんでしたが、この仕事にmongodbを使用する方法を検討する必要があります。私は、この種の負荷に対応するのは1台のコンピュータだけではないと思います。 1台のコンピュータは約2800件のリクエストを2回処理する必要があり、それが可能であるかどうかは疑問です。私はあなたが10台のフロントコンピュータでこれを行うことができると思います。そして、あなたは1秒間に280リクエストまでダウンしています。それでも、私は分散型のmongo db setupを使うでしょう。あなたは実際にパフォーマンステストを書いて、それがどのように拡大するかを見てください。 – Knubo

+0

あなたの助けに感謝します。 :) 私はEC2を使用しようとしており、Nodejsを使用して単純なWeb要求を行い、MongoDBにログインしている可能性があります。 :)それがうまくいくかどうかわからない。 :) – murvinlai

0

私には妥当な音です。ログを用いる簡単な方法は、例えば、 grepを使ってログから正しい呼び出しを見つけ、それらを数えます。

Knuboは、すでにあなたはかなりのログ・ファイルを見ることができ10M + /時と同じように、理にかなって処理された:)だから、例えばエントリを圧縮し、言ったように

  1. 新しいログファイルを開始する(回転ログ)
  2. カウント昨日から正しいエントリログファイル
  3. アーカイブ処理のログファイル(GZIP、BZIP2、7zipを等:プロセスを毎日行います)
関連する問題