BT

ScaleUpがIISのファイルアップロードに関する多くの制限を緩和する

| 作者: Abel Avram フォローする 7 人のフォロワー , 翻訳者 竹中 翔 - (株)ポータルアイランド フォローする 0 人のフォロワー 投稿日 2010年5月13日. 推定読書時間: 3 分 |

原文(投稿日:2010/05/05)へのリンク

LeanServerが、ファイルアップロードやMicrosoftのWebプラットフォームを苦しめているいくつかの問題を解決するため、ScaleUpというIIS 7.0の拡張機能を作成した。作者によれば、ScaleUpはアップロードの高速化、無制限のアップロードファイルサイズのサポート、1サーバ当り数千アップロードへのスケールアップ、進捗状況のレポート、ストリーミング、フィルタリングなどを提供する。

ASPやASP.NETはファイルアップロードについて、長い間いくつかの問題を抱えている。当初、POSTメッセージをパースして、ファイル情報を取得するためのカスタムコードを書かないと、POSTメッセージからファイルを取り出すことができなかった。ASP.NETではFileUploadコントロールが導入された。このコントロールは、同期的にPOSTデータをメモリにロードし、データをパースしてファイルを取り出し、それをディスクに保存することによって、ファイルアップロードプロセスを改善した。だが、これにはいくつかの問題があった。最も深刻なものは、すぐにメモリがフラグメント化してしまい、OutOfMemoryExceptionにつながる可能性があることだ。なぜなら、ファイルがディスクに保存される前に、全てのファイルのデータが一度メモり上に保持されるからだ。ASP.NET 2.0では、80KBを超えたアップロードデータをディスクに保存していく、ディスクバッファリングオプションを導入することで、更なる改善が図られた。だが、まだいくつかの制限があった。

  • アップロードファイルの最大サイズが2GB(ASP.NET)、もしくは4GB(IIS)だった。
  • 1アップロードに対して1スレッド割り当てられていた。これは、スレッド不足を引き起こす。
  • ディスクバッファリングはパフォーマンスに深刻な悪影響を及ぼした。
  • アップロードはストリームにできず、進捗状況のレポートもなかった。

ScaleUpはこれらの問題を全て解決する。このフレームワークが提供するのは、次のような機能だ。

  • 高速なアップロード(最大20倍)
  • 無制限のアップロードサイズ
  • サーバ当り同時に数千のアップロードができるようにスケールアップ
  • 進捗状況のレポート、ストリーミング、フィルタリングといった機能
  • 各サーバのアップロードプロセスのパフォーマンス監視

かつてMicrosoftでIISのPMを務めており、現在はLeanServerのCTOであるMike Volodarsky氏は、ScaleUpがどのように動作するのかをこのように話している。

ScaleUPの秘密は、独自のハイパフォーマンスプレロードエンジンを使ってアップロード処理を完全に置き換えるため、IIS 7.0のネイティブ拡張レイヤを使っていることです。これは、既存のアップロード処理制限を取り除くことを可能にします。また、既存のIIS互換のアプリケーションを変更せずに、アップロード処理を行えます。

ScaleUPのアップロードエンジンの中心は、完全な非同期リクエストプレロードです。これはスレッド不足を解消し、今日のサーバが備えているマルチコアの力を活用することができます。

このエンジンは、ネットワークデータの読み込み、アップロードされたデータのパース、ストリーミングエンティティフィルタ、ディスクストレージに対して完全に非同期です。内部的には、非同期アンバッファIOのような高度なWindowsのパフォーマンス技術や高度なキャッシュ管理、アップロードのスループットを向上させ、サーバのリソース消費を提言するための、IIS 7.0のありとあらゆるトリックを活用しています。

現在、ScaleUpはMySpaceで使われており、1日で2500万回のアップロードを処理している。IIS拡張をインストールした後は、アップロードサーバの数を削減したそうだ。また、ASP、ASP.NET、PHPアプリケーションでScaleUpを使用しており、既存のアプリケーションを修正することなく使うことができたのだという。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT