Dee*_*101 2 azure azure-diagnostics
在我试图清除的过程中,DiagnosticMonitorConfiguration我尝试了以下方法:
但我仍然DirectoryConfiguration在DiagnosticMonitorConfiguration的目录数据源中看到额外的成员副本.Application_Start()每当IIS线程退役(空闲时间为20分钟)时调用global.asax时,会意外添加这些额外的副本.我已经复制粘贴了BUGGY代码,显示了它们的添加方式(最终我得到了一个例外OverallQuotaInMB is 150MB but sum of requested sub-quotas is 850MB).
问题:我理解为什么会有重复.但是,尽管尝试了上述项目符号列表中的操作,为什么DiagnosticMonitorConfiguration不会被清除?究竟是什么状态被坚持下去?我只能认为它必须是Azure表或Azure SQL - 但这只是猜测.
// called from global.asax's Application_Start()
public bool Initialize()
{
RoleInstanceDiagnosticManager roleInstanceDiagnosticManager = getRoleInstanceDiagnosticManager();
config = roleInstanceDiagnosticManager.GetCurrentConfiguration();
if (config == null)
config = DiagnosticMonitor.GetDefaultInitialConfiguration();
LocalResource localResource = RoleEnvironment.GetLocalResource("MyAppLogFolder");
DirectoryConfiguration dirConfig = new DirectoryConfiguration();
dirConfig.Container = "myapplog-blob";
dirConfig.DirectoryQuotaInMB = localResource.MaximumSizeInMegabytes;
dirConfig.Path = localResource.RootPath;
// This is a BUG, keeps adding duplicate entries
config.Directories.DataSources.Add(dirConfig);
limitOtherDefaultDirSizes(config); // limits overall quota to 150MB
config.Directories.ScheduledTransferPeriod = TimeSpan.FromMinutes(10.0);
roleInstanceDiagnosticManager.SetCurrentConfiguration(config);
return true;
}
Run Code Online (Sandbox Code Playgroud)
远程调试显示DiagnosticMonitorConfiguration数据结构如下所示.你可以清楚地看到这里的重复,保证例外.
- config {Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorConfiguration}
- Directories {Microsoft.WindowsAzure.Diagnostics.DirectoriesBufferConfiguration}
- DataSources Count = 85 System.Collections.Generic.IList<Microsoft.WindowsAzure.Diagnostics.DirectoryConfiguration>
+ [0] {Microsoft.WindowsAzure.Diagnostics.DirectoryConfiguration}
+ [1] {Microsoft.WindowsAzure.Diagnostics.DirectoryConfiguration}
+ [2] {Microsoft.WindowsAzure.Diagnostics.DirectoryConfiguration}
- [3] {Microsoft.WindowsAzure.Diagnostics.DirectoryConfiguration}
Container "myapplog-blob" string
DirectoryQuotaInMB 10 int
Path "C:\\Resources\\directory\\73c8a6bf9a5e434ab3d0c44034e7b7e9.MyAPP.API.MyAppLogFolder\\" string
- [4] {Microsoft.WindowsAzure.Diagnostics.DirectoryConfiguration}
Container "myapplog-blob" string
DirectoryQuotaInMB 10 int
Path "C:\\Resources\\directory\\73c8a6bf9a5e434ab3d0c44034e7b7e9.MyAPP.API.MyAppLogFolder\\" string
+ [5] {Microsoft.WindowsAzure.Diagnostics.DirectoryConfiguration}
...
+ [84] {Microsoft.WindowsAzure.Diagnostics.DirectoryConfiguration}
Run Code Online (Sandbox Code Playgroud)
请查看MSDN上的以下文章:Windows Azure诊断概述
在实施Windows Azure诊断时,您应该考虑以下事项:
- 配置信息存储在/ wad-control-container/deploymentID/rolename/roleinstance下的Windows Azure blob存储中的XML文件中
配置保存在当前部署的blob存储中的XML文件中.在您调用的代码中GetCurrentConfiguration,将加载此XML文件.然后你会一遍又一遍地追加目录(这意味着每个回收都会尝试将目录添加到当前配置中).
GetCurrentConfiguration当您尝试远程修改设置时(例如:您希望在部署应用程序后添加一些性能计数器),这非常棒.如果你总是调用GetDefaultInitialConfiguration(); 你会从干净的石板开始.
PS:尝试将此代码放在WebRole.cs中,这样它只会在您的实例启动时执行一次,并且不会在每次启动时减慢应用程序池的速度.
| 归档时间: |
|
| 查看次数: |
620 次 |
| 最近记录: |