さて、まず第一に、私は運用担当者ではなく開発者であると言っておきます。なので、ここで少し未知の土地に行きますので、ご容赦ください。
Azure仮想マシンを使用して、1.9 GBのzipファイルから50 GBのXMLファイルを抽出したいと思います。したがって、私はAzureでどのインスタンスサイズを使用して、必要以上のコストをかけずに優れたパフォーマンスを実現するかをテストしてきました。
ただし、Azure VMのディスクパフォーマンスは驚くべきものではありません。何か問題を起こしているのが私なのか、それとも期待どおりの結果が得られるのかを知りたいのですが。
まず第一に、私は何をテストしてきましたか?カスタムの.NETコンソールアプリケーションがあり、それはzipファイルを引数として取り、すぐにzipファイルが存在する同じディレクトリにzipファイルの抽出を開始します。抽出の進行中に、アプリケーションはメガバイト数を計算しますアプリケーションは1秒あたりのターゲットファイルに書き込み、それを出力します。
私のローカル開発マシンでは、このアプリケーション(160〜210 MB /秒の書き込み)でかなり良いパフォーマンスを得ています。したがって、抽出プロセス全体には約8分かかります。私のローカルマシンの仕様は、Intel Core i7 950、3 GHz、4コア(8論理)、12 GB RAM、Samsung SSD 830シリーズ250 GBです。
さて、私はさまざまなインスタンスサイズのテストを始めました、そしてここに私の結果があります。
- Windows Server 2012 Datacenter R2(8コア、14 GB RAM)を備えたA4インスタンスで、同じストレージアカウントを使用する4つの仮想ディスクのストライプRAIDを使用し、ホストキャッシュを使用しない場合、30〜35 MB /秒で安定しました。抽出には24分48秒かかりました。ホストキャッシングを有効にすることも試みましたが、実際には違いはありませんでした。
- Windows Server 2012 Datacenter(8コア、28 GB RAM、500 GBローカルSSDディスク)を備えたD4インスタンスで、最初の数分間は本当に良いパフォーマンス(150+ MB /秒)を達成し、ピーク時は200 MB /でパフォーマンスを変化させました9 MB /秒の谷と谷。平均パフォーマンスは70〜100 MB / sでした。抽出には9分40秒かかりました。
- Windows Server 2012 Datacenter(4コア、14 GB RAM、250 GBローカルSSDディスク)を備えたD3インスタンスでは、最初の1分間で本当に優れたパフォーマンス(150+ MB /秒)が得られましたが、その後、パフォーマンスは20〜40 MBまで低下しました。 / s、抽出プロセスに21分49秒かかります。
D2およびD1インスタンスでは、ディスクのパフォーマンスはD3よりも劣ります。
そして、これは私を本当に驚かせます。ローカルSSDディスクは、D1、D2、およびD3インスタンスの場合と同様に、どのようにパフォーマンスが悪いのでしょうか。また、ディスクパフォーマンスがD1とD4で大きく異なる理由を誰かが知っていますか?メモリの問題ですか?抽出が進行しているときにタスクマネージャーを見ると、メモリ使用量が急増しています。Windowsが書き込まれたデータをキャッシュしているためだと思いますが、メモリが不足すると、データをディスクにフラッシュする必要があります。これが発生すると、ディスクのパフォーマンスが低下します。しかし、これは私のローカルマシンでは発生しないので、なぜこれらのVMでこのような積極的なキャッシュが必要なのでしょうか。
ローカルマシンとAzureでホストされている仮想マシンに違いがあることはわかっていますが、実際に発生しているディスクパフォーマンスは期待どおりですか?
(原因は自分のアプリケーションであると疑ったので、元々Stackoverflowに質問を投稿しました。しかし、もうはっきりしていません)