Можно ли использовать профилирование производительности Visual Studio с Service Fabric?

Надеюсь, это просто ...

Я хочу профилировать производительность моего кластера Service Fabric.

Пока что я: - Захожу в Start Diagnostics tools без отладки. - Пройдите через мастер, выбрав мой проект служебной фабрики в качестве начального. - Затем он спрашивает, какие проекты включить, поэтому я включаю свой exe-файл службы - Затем я выбираю инструментарий (мне нужно время на уровне метода)

Затем я нажимаю кнопку «Пуск», и мой exe сразу же вылетает. Я предполагаю, что это связано с тем, что Visual Studio пытается запустить мою «службу» вне контекста служебной фабрики как автономный исполняемый файл.

Не знаю, что с этим делать ...

Трассировка стека:

ОТЛАДКА: параметры активации

Необработанное исключение: System.Fabric.FabricConnectionDeniedException: не авторизовано для подключения ---> System.Runtime.InteropServices.COMException: исключение из HRESULT: 0x80071C43 в System.Fabric.Interop.NativeRuntime.FabricEndGetNodeContext (IFabricAsyncOperationRuntime context) .NativeFabricRuntimeFactory.GetNodeContextEndWrapper (контекст IFabricAsyncOperationContext) в System.Fabric.Interop.AsyncCallOutAdapter2`1.Finish (IFabricAsyncOperationContext context, Boolean expectedCompletedSynchronously) --- End of innerRaskontext_stack. Задача задачи) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача задачи) в Microsoft.ServiceFabric.Services.Runtime.RuntimeContext.d__3.MoveNext () --- Конец трассировки стека из предыдущего места, где было сгенерировано исключение --- в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Задача t ask) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача задачи) в Microsoft.ServiceFabric.Services.Runtime.ServiceRuntime.d__0.MoveNext () --- Конец трассировки стека из предыдущего места, где было сгенерировано исключение --- в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (задача задачи) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача задачи) в System.Runtime.CompilerServices.TaskAwaiter.GetResult (

Спасибо за помощь в продвижении!


person Steve    schedule 08.06.2016    source источник
comment
Всегда стоит поискать в Google сообщение об исключении - Сбой отладки в VS2015 RC: System.Fabric.FabricConnectionDeniedException   -  person stuartd    schedule 08.06.2016
comment
Спасибо, но я это нашел. Если вы прочтете немного внимательнее, то увидите, что я не говорю о том, чтобы просто получить эту ошибку, пытаясь запустить его ... У меня нет проблем с запуском его для нормальной отладки. Вопрос был в том, как обойти это в случае запуска через профилировщик производительности.   -  person Steve    schedule 09.06.2016


Ответы (2)


Вы видите, что Visual Studio пытается запустить процесс узла службы самостоятельно за пределами среды выполнения Service Fabric. Обычно, когда вы запускаете службу через Visual Studio, вы развертываете проект приложения, который проходит через процесс регистрации и создания экземпляров ваших служб в локальном кластере Service Fabric.

По этой причине в настоящее время инструментарий не работает с проектами Service Fabric. Мы ищем способы сделать это возможным в будущем.

Вы по-прежнему можете выполнять профилирование Sampling, которое позволяет прикрепить профилировщик к работающему EXE. В этом случае вы сначала обычно развертываете свое приложение, а затем присоединяете профилировщик к своим служебным EXE-файлам.

person Vaclav Turecek    schedule 08.06.2016
comment
Спасибо за ответ. Есть идеи, когда он будет поддерживаться? Или любые другие инструменты / обходные пути? (Помимо выборки c) - person Steve; 09.06.2016
comment
Не могли бы вы дать дополнительные рекомендации по профилированию выборки? - Единственное, что я могу найти, - это устаревшие статьи MSDN, в которых меня просят нажимайте на несуществующие вещи. - Я использую Enterprise SKU VS2015 Update 3. - Было бы неплохо щелкнуть мышью. - person BrainSlugs83; 15.06.2017
comment
@ BrainSlugs83 - это похоже на вопрос сам по себе - не стесняйтесь поднимать его :) - person Ondrej Svejdar; 26.02.2018

См. https://msdn.microsoft.com/en-us/library/dd255414.aspx?f=255&MSPPError=-2147217396

  1. При необходимости инициализируйте переменные среды профилирования с вариантом VSPerfClrEnv {/globalsamplegc | /globalsamplegclife}[/samplelineoff], затем перезагрузитесь.
  2. Запустите профилировщик для сбора данных с одним из следующих вариантов:

    VSPerfCmd /START:{COVERAGE|SAMPLE|CONCURRENCY|TRACE} /OUTPUT:file /ATTACH:(pid|name)[,(pid|name)]* [/USER:[domain\]username]

/USER:[domain\]username необходим, если служба или процесс выполняется под другой учетной записью пользователя.

Расширение файла .vspx или .vsp добавляется к спецификации /OUPUT:file. Затем вы можете открыть файл .vspx или .vsp в Visual Studio, чтобы просмотреть отчет о профилировании.

Запустите VSPerfCmd /? для получения дополнительных сведений и просмотра полного списка параметров профилирования.

person ergohack    schedule 08.02.2018