Можно ли профилировать службу приложений Azure с помощью Jetbrains DotTrace? - PullRequest
0 голосов
/ 25 октября 2019

Вот что я попробовал:

1) Загрузка консольных инструментов в приложение с использованием Kudu и их запуск. Ну, это невозможно, потому что запись в реестр не разрешена.

2) Загрузка RemoteAgent с использованием Kudu и его запуск. Я получаю: No DNS entries exist for host xxx. No such host is known. из интерфейса dotTrace при подключении к URL-адресу, напечатанному в консоли Kudu. Служба приложения может прослушивать только порты 80 и 443.

3) Использование dotTrace SDK и JetBrains.Profiler.Api выглядело многообещающе. Однако он не хочет подключать профилировщик в Azure (в отличие от локально, где у него нет проблем), с этим кодом он попадает в исключение тайм-аута.

private void AttachProfiler(ProfilingType profilingType)
    {
        var folder = AppDomain.CurrentDomain.BaseDirectory;
        FileList = GetListFile(folder);
        CurrentProfilingType = profilingType.ToString();

        SelfAttach.Attach(new SaveSnapshotProfilingConfig
        {
            ProfilingControlKind = ProfilingControlKind.Api,
            SaveDir = Path.Combine(folder, "Temp") ,
            RedistDir = Path.Combine(folder, "_JetBrains.Profiler.SelfSdk.2019.1.3"),
            ProfilingType = profilingType,
            ListFile = FileList
        });
        SleepUntilAttachedOrTimedOut();
    }



    private static string GetListFile(string folder)
    {
        return Path.Combine(folder, "snapshot_list.xml");
    }

    private void SleepUntilAttachedOrTimedOut()
    {
        var totalMilliseconds = 0;

        while (!CheckProfilerAttached())
        {
            var intervalMilliseconds = 250;

            Thread.Sleep(intervalMilliseconds);

            totalMilliseconds += intervalMilliseconds;

            if (totalMilliseconds >= 60000)
            {
                throw new TimeoutException("Could not attach profiler. Timeout.");
            }
        }
    }

    private bool CheckProfilerAttached() => SelfAttach.State == SelfApiState.Active;

1 Ответ

0 голосов
/ 09 ноября 2019

В настоящее время невозможно. Проблема создана здесь: https://youtrack.jetbrains.com/issue/PROF-921

...