Azure诊断多个AppDomain问题

格热哥兹·班恰克(Grzegorz Banczak)

我遇到了Azure诊断监视器的以下问题:当我在WorkerRole入口点的OnStart()事件中创建新的AppDomain时,诊断仅在父AppDomain中起作用。我曾尝试在子AppDomain中初始化Diagnostics Monitor,但这无济于事。(跟踪仅从父域收集)

复制代码示例:

public class WorkerRole : RoleEntryPoint
{
    public override void Run()
    {
        // This is a sample worker implementation. Replace with your logic.
        InitializeDiagnostics();
        Trace.TraceInformation("WorkerRole1 entry point called", "Information");

        while (true)
        {
            Thread.Sleep(10000);
            Trace.TraceInformation("Parent domain working", "Information");
        }
    }

    public override bool OnStart()
    {
        // Set the maximum number of concurrent connections 
        ServicePointManager.DefaultConnectionLimit = 12;
        InitializeDiagnostics();

        var setup = new AppDomainSetup();
        setup.ApplicationBase = AppDomain.CurrentDomain.BaseDirectory;
        setup.ConfigurationFile = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile;
        var newDomain = System.AppDomain.CreateDomain("NewApplicationDomain",null, setup);
        foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies().Where(x => !x.GlobalAssemblyCache))
        {
            newDomain.Load(assembly.GetName());
        }
        newDomain.Load(typeof (Worker).Assembly.FullName);
        var worker =  newDomain.CreateInstanceAndUnwrap(this.GetType().Assembly.FullName, typeof (Worker).FullName) as Worker;
        worker.DoWork();


        return base.OnStart();
    }

    public void InitializeDiagnostics()
    {
        var roleInstanceDiagnosticManager = new RoleInstanceDiagnosticManager(RoleEnvironment.GetConfigurationSettingValue("Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString"),
                                                                              RoleEnvironment.DeploymentId,
                                                                              RoleEnvironment.CurrentRoleInstance
                                                                                            .Role.Name,
                                                                              RoleEnvironment.CurrentRoleInstance.Id);
        var dmc = roleInstanceDiagnosticManager.GetCurrentConfiguration();

        var dictionaryConfiguration = new DirectoryConfiguration();
        DiagnosticMonitor.Start("Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString", dmc);
    }
}

public class Worker : MarshalByRefObject
{
    public void DoWork()
    {


        new Task(() =>
            {
                while (true)
                {
                    Thread.Sleep(1000);
                    Trace.TraceInformation(AppDomain.CurrentDomain.FriendlyName + " Worker working...", "Information");
                }

            }).Start();
    }
}

}

应用配置:

<?xml version="1.0" encoding="utf-8" ?>
  <configuration>
   <system.diagnostics>
    <trace>
           <listeners>
            <add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                name="AzureDiagnostics">
                <filter type="" />
            </add>
           </listeners>
       </trace>
   </system.diagnostics>
</configuration>

预期的输出:许多已记录的消息:“ {域名} Wokrer正在工作...”一些“父域正在工作”

实际输出:“父域正常工作”

我正在使用Azure SDK 2.0。你们中有人遇到过类似的问题吗?

格热哥兹·班恰克(Grzegorz Banczak)

好的,终于解决了。将Azure SDK升级到2.3可以做到这一点...有趣的是,消息仍然没有出现在Compute仿真器控制台中,但是在升级之后,它们已正确地记录到WADLog表中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

诊断性能问题

来自分类Dev

帮助诊断“冻结”问题

来自分类Dev

诊断性能问题

来自分类Dev

诊断 Ubuntu 问题的工具

来自分类Dev

Azure诊断清除

来自分类Dev

Azure 函数中的 AppDomain

来自分类Dev

诊断Elasticsearch问题的最佳方法?

来自分类Dev

如何诊断字体渲染问题?

来自分类Dev

如何诊断可疑的NIC问题?

来自分类Dev

清除设置Azure诊断的步骤

来自分类Dev

启用Azure Redis缓存诊断

来自分类Dev

Azure 诊断日志大小限制

来自分类Dev

Azure网站AppDomain多次重启

来自分类Dev

带有VB / C#诊断分析器/ CodeFix /自动更新的多个.vsix会导致性能问题吗?

来自分类Dev

如何诊断JNI内存损坏问题?

来自分类Dev

如何诊断DVD驱动器的问题?

来自分类Dev

如何诊断DVD驱动器的问题?

来自分类Dev

了解traceroute输出以诊断Verizon FIOS的问题

来自分类Dev

诊断系统(命令)调用有问题?

来自分类Dev

诊断间歇性的Internet连接问题

来自分类Dev

图像旋转器-诊断问题Javascript / HTML

来自分类Dev

如何诊断USB“稳定性”问题?

来自分类Dev

您如何诊断持续崩溃的问题?

来自分类Dev

如何诊断多个Linux系统故障?

来自分类Dev

SAS:多条线路上的多个患者诊断

来自分类Dev

诊断Azure有状态参与者

来自分类Dev

如何诊断Azure网站为何持续崩溃

来自分类Dev

如何从Azure获取诊断日志信息

来自分类Dev

诊断Azure有状态参与者