ピーク時には約 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 の速度が向上しますか?それとも、イメージを探し出す必要があるかどうかを確認するために最初のチェックが必要ですか?