I am just in the process of transferring over to Windows Azure. (Purely because they just have SQL Azure and you just can't beat it).

I have a hosted service (deployed instance of a web app) and its ticking over nicely.

I have noticed that it also created a Storage Account. I am not using or calling anything from that storage account (or so I thought). I don't reference any blobs. In fact my web app doesn't even create temporary files.

But looking at my billing I am accruing storage transactions for Windows Azure Storage. I have only been up on Azure for a few days and have accrued 12,000 transactions.

Is my deployment using it and I get charged each time an aspx page is called to be loaded? Do I get charged when I deploy (as I have been quite a few times, while I have been testing it).

Could someone please let me know where these charges are coming from?

  • call azure customer support
    – tony roth
    Feb 26, 2012 at 3:50
  • @tony - there's no need to call customer support. There's a very simple explanation for this. Feb 29, 2012 at 15:24

2 Answers 2


Your deployment is not causing 12,000 transactions. That's causing maybe 5-10 (as there might be multiple block reads, depending on deployment package size).

When you deploy to Windows Azure, you need some way of monitoring your application externally. This is where Windows Azure Diagnostics comes in to play. All of your Windows Azure diagnostic logs, performance counters, trace statements, etc. get written to Table Storage (or blob storage, in the case of IIS logs).

If you accrued 12,000 transactions in, say, 3 days, that's averaging 2-3 per minute. At this rate, you'd accumulate charges of about 12 cents per month.

If you want to reduce the number of transactions, you can set up diagnostics yourself, instead of relying on default values (whatever those might be). For example, here's a very simple setup that would go in your OnStart() :

 DiagnosticMonitorConfiguration diag = DiagnosticMonitor.GetDefaultInitialConfiguration();
            var perfCounter = new PerformanceCounterConfiguration()
                CounterSpecifier = @"\processor(*)\% Processor Time",
                SampleRate = TimeSpan.FromSeconds(30)

            diag.PerformanceCounters.ScheduledTransferPeriod = TimeSpan.FromMinutes(5);

            diag.DiagnosticInfrastructureLogs.ScheduledTransferLogLevelFilter = LogLevel.Error;
            diag.DiagnosticInfrastructureLogs.ScheduledTransferPeriod = TimeSpan.FromMinutes(5);

            diag.Logs.ScheduledTransferLogLevelFilter = LogLevel.Error;
            diag.Logs.ScheduledTransferPeriod = TimeSpan.FromMinutes(5);

            DiagnosticMonitor.Start(CloudStorageAccount.DevelopmentStorageAccount, diag);

While these values are arbitrary, the key point is that transfers to Table (or Blob) storage are now only occurring once every 5 minutes, per object type. Note: If you have multiple instances running, you'll also have multiple uploads to storage.

  • Thanks David. Now that my entire site is on Azure (and we are past that horrible downtime) I am learning more about it each day. Diagnostics sounds about right, along with deployments.
    – Adam
    Mar 1, 2012 at 8:02

Well I finally discovered why and here is the reason in case others come across the same concern.

I am uploading via Visual Studio. In order to upload, Visual Studio creates a storage account and loads the deployment package there.

This is the reason for the storage account and why there is activity on it.

After everything is deployed you are free to delete the storage account and everything else keeps working. However you will need to create it again the next time you deploy.

  • 1
    Not quite accurate. To get 12,000 transactions in a few days, that means 12,000 calls to Azure Storage, which is not caused by grabbing a deployment image. It's due to diagnostics. Feb 29, 2012 at 15:13

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .