読者です 読者をやめる 読者になる 読者になる

しばやん雑記

ASP.NET とメイドさんが大好きなフリーランスのプログラマーのブログ

Azure Web サイトのファイルストレージに関して性能面で追加の検証をしてみた

Azure Web サイトのファイルストレージは想像以上に遅い - しばやん雑記 で帝国兵さんから細かいトランザクションに弱いと教えてもらったので、読み込みでどのくらい影響が出てくるのか調べました。

FSRM を使ったクオーター管理なら、書き込みと削除では大きな影響が出ても、読み込みはそこまでの差は出ないのではないかと考えていました。もうちょっと詳しく調べておかないと、Web サイトを使うときに考慮する必要が出てきそうです。

なのでサクッと適当に書き込み、読み込み、削除を繰り返すだけのコードを書きました。無駄に引数でファイル数と書き込むバイト数を指定出来るようにもしてます。

それでは前回と同じように各ストレージ領域で確認していきます。

永続化ストレージ (C:\)

C:\DWASFiles\Sites\#1shibayan\Temp>StorageBenchmark.exe 1000 0
WriteFile : 662ms
ReadFile : 179ms
DeleteFile : 300ms

C:\DWASFiles\Sites\#1shibayan\Temp>StorageBenchmark.exe 1000 512
WriteFile : 1114ms
ReadFile : 166ms
DeleteFile : 243ms

ローカルドライブ (D:\)

D:\Users\shibayan-api\Documents>StorageBenchmark.exe 1000 0
WriteFile : 785ms
ReadFile : 177ms
DeleteFile : 668ms

D:\Users\shibayan-api\Documents>StorageBenchmark.exe 1000 512
WriteFile : 1680ms
ReadFile : 169ms
DeleteFile : 600ms

Azure Web サイト共有ストレージ (D:\home)

D:\home\site\temp>StorageBenchmark.exe 1000 0
WriteFile : 2666ms
ReadFile : 2122ms
DeleteFile : 15965ms

D:\home\site\temp>StorageBenchmark.exe 1000 512
WriteFile : 6379ms
ReadFile : 2925ms
DeleteFile : 15475ms

正直、そこまでは影響はしないだろうと思っていた読み込みも、確認してみると 10 倍ぐらい遅いことが分かりました。アプリケーション起動時に読み込まれるファイルが多い場合には、Always On を有効にすると多少の改善が見込めますが、やはり多数の静的なコンテンツは Blob や CDN を使って配信すべきでしょうね。

この辺りは GoAzure 2015 のセッションで触れようかと思ってます。

Microsoft Azure のイベント |GoAzure 2015 ~Microsoft Azure 史上最大のコミュニティイベント~

あと、計測中に共有ストレージでは測定値が割と不安定だったので、ファイルサーバーをいろんなユーザーと共有している点だけ頭に入れておく必要がありそうです。

おまけ:MacBook Pro の SSD

C:\Temp>StorageBenchmark.exe 1000 0
WriteFile : 268ms
ReadFile : 64ms
DeleteFile : 226ms

C:\Temp>StorageBenchmark.exe 1000 512
WriteFile : 591ms
ReadFile : 41ms
DeleteFile : 204ms

当然ながらぶっちぎりで速いです。

Web サイトでも Premium Storage を使えるようになれば、さらに楽しめそうです。