1

ピーク時には約 250/rps を提供する必要があります。私たちが行っているのは、画像の URL を受け取り、memcache から画像を取り出し、Apache 経由で返すことです。

私たちの現在のシステムは、メモリが 4 GB のデュアルコア マシンです。memcache のイメージ用に 2 GB、Apache 用に 2 GB です。しかし、ピーク時には非常に高い負荷 (20 ~ 30) が見られます。Apache によって報告された平均応答時間は、1 要求あたり 30 ~ 80 ミリ秒であり、メモリから提供される単純な Apache 要求としてはやや遅いようです。

これのためのより良いツールはありますか? IO 待機がそれを妨げていたため、ディスクからの提供はオプションではないため、メモリに移動しました。CDN はどのように行うのですか?

編集:まあ、システムはこのように機能します。リクエストが届くと、「キュー」をチェックして、このリクエストを以前に見たかどうか、およびイメージを (ディスクから... またはメモリから) 提供したことがあるかどうかを確認します。そうでない場合は、memcached キューでそのリクエストのカウンターをインクリメントし、実際にイメージを生成してメイン サーバーに保存するワーカー マシンがあります。そのため、現在、リクエストが来ると、memcached db が存在するかどうかを確認してから、実際の画像データベースの別の db に接続します。画像がディスク上にあるとき、file_exist 関数だけでも完了するまでに 30 ミリ秒以上かかることがわかったので、メモリに移動しました。イメージを ramdisk に移動した場合、file_exist の速度が向上しますか?それとも、イメージを探し出す必要があるかどうかを確認するために最初のチェックが必要ですか?

4

2 に答える 2

3

nginxを見たことがありますか?

2009年5月のNetcraftによると、nginxは3.25%の最もビジーなサイトにサービスを提供またはプロキシしました。memcachedからも提供できます。

于 2009-11-24T05:02:32.823 に答える
1

画像のサイズにもよりますが、Apache はこれをまったく問題なく処理するはずです。2000 リクエスト/秒を処​​理する Apache があり、レスポンスの平均サイズは 12K です。マシンには 32 GB のメモリがあるため、すべてのコンテンツがキャッシュされます。

ここにいくつかのチューニングのヒントがあります。

  1. ワーカーのようにスレッド化された MPM を使用し、多くのスレッドを開いています (256 あります)。
  2. mod_cache を使用して、すべての画像がメモリ内にあるようにします
  3. Apache プロセスにできるだけ多くのメモリを割り当てる

memcache とは、memcached サーバーのことですか? TCP 接続の遅延は (ループバックであっても) 直接メモリ アクセスよりもはるかに大きいため、memcached の実行は遅くなります。

すべての画像をメモリに収めることができる場合は、RAM ディスクも大いに役立ちます。

于 2009-11-24T02:02:39.707 に答える