3

Azureプロジェクトのプロセッサ負荷を測定しようとしていますが、エミュレーターを実行すると、エミュレーターコンソールで次のようなエラーが発生します。

[MonAgentHost] Error: MA EVENT: 2012-10-10T12:15:06.982Z
[MonAgentHost] Error:    2
[MonAgentHost] Error:    9028
[MonAgentHost] Error:    8168
[MonAgentHost] Error:    SysCounterListener.dll
[MonAgentHost] Error:    0
[MonAgentHost] Error:    b9eb57e3-62d5-49a5-b395-abc3bd5
[MonAgentHost] Error:    liscounter.cpp
[MonAgentHost] Error:    SystemCounter::AddCounter
[MonAgentHost] Error:    660
[MonAgentHost] Error:    ffffffffc0000bb9
[MonAgentHost] Error:    0
[MonAgentHost] Error:    
[MonAgentHost] Error:    PdhAddCounter(\Processor(_Total)\% Processor Time) failed

新しい単純なコンソールプロジェクト(Azureではない)を作成してみました。ここでパフォーマンスメトリックを読み取ることができるため、この提案http://www.infosysblogs.com/microsoft/2011/06/mystery_of_the_windows_azure_d.htmlは解決策ではないようです。

RoleEntryPointのOnStartでパフォーマンスカウンターを次のように設定します。

public class WebRole : RoleEntryPoint
{
    public override bool OnStart()
    {
        try
        {
            DiagnosticMonitorConfiguration config = DiagnosticMonitor.GetDefaultInitialConfiguration();

            var counters = new List<string>
                    {
                        @"\Processor(_Total)\% Processor Time"
                    };

            if (counters.Count() > 0)
            {
                config.PerformanceCounters.ScheduledTransferPeriod = TimeSpan.FromMinutes(5);
                config.PerformanceCounters.BufferQuotaInMB = 10;

                counters.ForEach(counter =>
                    config.PerformanceCounters.DataSources.Add(
                        new PerformanceCounterConfiguration()
                        {
                            CounterSpecifier = counter,
                            SampleRate = TimeSpan.FromSeconds(10)
                        })
                );
            }

            DiagnosticMonitor.Start(
                    "Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString",
                    config);

        }
        catch (Exception e)
        {
            Trace.TraceError("Exception during WebRole1.OnStart: " + e.ToString());
        }

        return base.OnStart();
    }
}

うまく機能するIISロギングを設定してみました。トレースも同様です。パフォーマンスカウンターではありません...

Visual Studio2010SP1とAzureSDK1.7がインストールされたWindows7Home Premiumを使用しています(SDK 1.3 8erでは機能しませんでした)。

私のインストールに何が欠けているか知っている人はいますか?

4

1 に答える 1

4

たまたま英語以外のバージョンのWindowsを使用していますか?もしそうなら、私はあなたに悪い知らせがあります。

どうやら、パフォーマンスカウンターはレジストリにローカライズされていますが、Azure Diagnosticsは英語名を使用してそれらを登録しようとします(を参照PdhAddCounter(\Processor(_Total)\% Processor Time) failed)。

同じ問題が発生し、Azureフォーラム(ここ)で質問しましたが、解決策や回避策は提供されませんでした。クラウド内のすべてのサーバーが英語版のWindowsを実行していると思いますので、問題はありませんが、ローカルでテストすることはできません。

これが当てはまる場合、私が提供できる唯一の解決策は、英語版のWindowsをインストールすることです。

于 2012-11-13T14:11:04.160 に答える