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 を使えるようになれば、さらに楽しめそうです。