Windows Azure 托管服务是否使用存储事务

Windows Azure 托管服务是否使用存储事务

我正处于转移到 Windows Azure 的过程中。(纯粹是因为他们只有 SQL Azure,你无法超越它)。

我有一个托管服务(已部署的 Web 应用程序实例)并且其运行良好。

我注意到它还创建了一个存储帐户。我没有使用或调用该存储帐户中的任何内容(或者我是这样认为的)。我没有引用任何 blob。事实上,我的 Web 应用甚至没有创建临时文件。

但查看我的账单,我发现 Windows Azure Storage 的存储交易量在不断增加。我使用 Azure 才几天,就累计了 12,000 笔交易。

我的部署是否在使用它?每次调用并加载 aspx 页面时,我是否都要付费?部署时是否要付费(我在测试时已经付费过好几次了)。

有人能告诉我这些费用是从哪里来的吗?

答案1

您的部署不会导致 12,000 笔交易。这可能会导致 5-10 笔交易(因为可能会有多次块读取,具体取决于部署包大小)。

当您部署到 Windows Azure 时,您需要某种方式来从外部监控您的应用程序。这就是 Windows Azure Diagnostics 发挥作用的地方。您的所有 Windows Azure 诊断日志、性能计数器、跟踪语句等都会写入表存储(或 Blob 存储,就 IIS 日志而言)。

如果你在 3 天内累计了 12,000 笔交易,那么平均每分钟就有 2-3 笔交易。按照这个速度,你每月将累积约 12 美分的费用。

如果您想减少交易数量,您可以自行设置诊断,而不是依赖默认值(无论默认值是什么)。例如,这是一个非常简单的设置,可以放在您的OnStart()

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


            diag.PerformanceCounters.DataSources.Add(perfCounter);
            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);

虽然这些值是任意的,但关键点是每个对象类型到表(或 Blob)存储的传输现在每 5 分钟仅发生一次。注意:如果您正在运行多个实例,那么您还将多次上传到存储

答案2

好吧,我终于发现了原因,下面就是原因,以防其他人遇到同样的问题。

我正在通过 Visual Studio 上传。为了上传,Visual Studio 会创建一个存储帐户并在其中加载部署包。

这就是存储帐户存在的原因以及为什么其上有活动。

部署完成后,您可以删除存储帐户,其他一切照常运行。不过,下次部署时,您需要再次创建它。

相关内容